{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from pyreadstat import pyreadstat\n",
    "from pandas.api.types import CategoricalDtype\n",
    "import scipy.stats as stats\n",
    "import statsmodels.api as sm\n",
    "import plotly.express as px\n",
    "import mytools\n",
    "import result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_excel(R\"data/大学生网课学习效率调查研究.xlsx\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "该研究的目的详细描述大学生网课学习效果的影响因素及线上上课的不足之处。属于描述性研究。\n",
    "\n",
    "数据获取\n",
    "\n",
    "本研究采用问卷调查法，采用方便抽样方法，通过问卷星网站发放问卷，共获得样本227个\n",
    "\n",
    "数据清理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>序号</th>\n",
       "      <th>提交答卷时间</th>\n",
       "      <th>所用时间</th>\n",
       "      <th>来自IP</th>\n",
       "      <th>1、您的性别：</th>\n",
       "      <th>2、您所在年级：</th>\n",
       "      <th>3、您觉得网课数量多吗？</th>\n",
       "      <th>4、上网课过程会分心吗？</th>\n",
       "      <th>5、您觉得课堂教学和网络教学哪个比较好？</th>\n",
       "      <th>6、在上网课前，您会预先安排自己的学习过程吗？</th>\n",
       "      <th>7、在上网课时有不懂的问题会向老师请教吗？</th>\n",
       "      <th>8、在课堂，你会参加老师和同学们的讨论中吗？</th>\n",
       "      <th>9、你们认为线上学习的气氛如何？</th>\n",
       "      <th>10、您的作业完成情况如何？</th>\n",
       "      <th>11、您认为影响线上学习的因素有哪些？</th>\n",
       "      <th>12、您认为线上学习中教师教学存在的问题是？</th>\n",
       "      <th>13、您觉得自己线上学习效率高吗？</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [序号, 提交答卷时间, 所用时间, 来自IP, 1、您的性别：, 2、您所在年级：, 3、您觉得网课数量多吗？, 4、上网课过程会分心吗？, 5、您觉得课堂教学和网络教学哪个比较好？, 6、在上网课前，您会预先安排自己的学习过程吗？, 7、在上网课时有不懂的问题会向老师请教吗？, 8、在课堂，你会参加老师和同学们的讨论中吗？, 9、你们认为线上学习的气氛如何？, 10、您的作业完成情况如何？, 11、您认为影响线上学习的因素有哪些？, 12、您认为线上学习中教师教学存在的问题是？, 13、您觉得自己线上学习效率高吗？]\n",
       "Index: []"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df.isnull().T.any()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3       223.104.26.150(西藏-拉萨)\n",
       "81      101.249.161.97(西藏-拉萨)\n",
       "98     101.249.164.222(西藏-拉萨)\n",
       "99     101.249.164.222(西藏-拉萨)\n",
       "100    101.249.164.222(西藏-拉萨)\n",
       "103      39.144.210.85(甘肃-兰州)\n",
       "111      111.49.203.97(宁夏-银川)\n",
       "121     61.178.103.141(甘肃-兰州)\n",
       "138      36.184.216.49(新疆-塔城)\n",
       "150     61.178.103.140(甘肃-兰州)\n",
       "155    101.249.164.177(西藏-拉萨)\n",
       "156    101.249.164.177(西藏-拉萨)\n",
       "157    101.249.164.177(西藏-拉萨)\n",
       "158    101.249.164.177(西藏-拉萨)\n",
       "159    101.249.164.177(西藏-拉萨)\n",
       "160    101.249.164.177(西藏-拉萨)\n",
       "162    101.249.164.177(西藏-拉萨)\n",
       "164    101.249.164.177(西藏-拉萨)\n",
       "165    101.249.164.177(西藏-拉萨)\n",
       "166    101.249.164.177(西藏-拉萨)\n",
       "170    101.249.164.177(西藏-拉萨)\n",
       "171    101.249.164.177(西藏-拉萨)\n",
       "172    101.249.164.177(西藏-拉萨)\n",
       "173    101.249.164.177(西藏-拉萨)\n",
       "174    101.249.164.177(西藏-拉萨)\n",
       "175    101.249.164.177(西藏-拉萨)\n",
       "176    101.249.164.177(西藏-拉萨)\n",
       "178    101.249.164.177(西藏-拉萨)\n",
       "179    101.249.164.177(西藏-拉萨)\n",
       "181    101.249.164.177(西藏-拉萨)\n",
       "183    101.249.164.177(西藏-拉萨)\n",
       "184    101.249.164.177(西藏-拉萨)\n",
       "185    101.249.164.177(西藏-拉萨)\n",
       "186    101.249.164.177(西藏-拉萨)\n",
       "187    101.249.164.177(西藏-拉萨)\n",
       "188    101.249.164.177(西藏-拉萨)\n",
       "189    101.249.164.177(西藏-拉萨)\n",
       "190    101.249.164.177(西藏-拉萨)\n",
       "191    101.249.164.177(西藏-拉萨)\n",
       "192    101.248.104.175(西藏-拉萨)\n",
       "197    101.249.164.177(西藏-拉萨)\n",
       "198    101.249.164.177(西藏-拉萨)\n",
       "203    101.249.164.177(西藏-拉萨)\n",
       "217     101.249.165.80(西藏-拉萨)\n",
       "218     101.249.165.80(西藏-拉萨)\n",
       "219     101.249.165.80(西藏-拉萨)\n",
       "220     101.249.165.80(西藏-拉萨)\n",
       "221     101.249.165.80(西藏-拉萨)\n",
       "222     101.249.165.80(西藏-拉萨)\n",
       "223     101.249.165.80(西藏-拉萨)\n",
       "224     101.249.165.80(西藏-拉萨)\n",
       "225     101.249.165.80(西藏-拉萨)\n",
       "226     101.249.165.80(西藏-拉萨)\n",
       "Name: 来自IP, dtype: object"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['来自IP'].duplicated()]['来自IP']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "df0 = df.drop_duplicates(subset=['来自IP'],keep='first')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '提交答卷时间', '所用时间', '来自IP', '1、您的性别：', '2、您所在年级：', '3、您觉得网课数量多吗？',\n",
       "       '4、上网课过程会分心吗？', '5、您觉得课堂教学和网络教学哪个比较好？', '6、在上网课前，您会预先安排自己的学习过程吗？',\n",
       "       '7、在上网课时有不懂的问题会向老师请教吗？', '8、在课堂，你会参加老师和同学们的讨论中吗？', '9、你们认为线上学习的气氛如何？',\n",
       "       '10、您的作业完成情况如何？', '11、您认为影响线上学习的因素有哪些？', '12、您认为线上学习中教师教学存在的问题是？',\n",
       "       '13、您觉得自己线上学习效率高吗？'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df1 = df.rename(columns={\n",
    "    '1、您的性别：': '性别',\n",
    "    '2、您所在年级：': '年级',\n",
    "    '3、您觉得网课数量多吗？':'网课数量多少',\n",
    "    '4、上网课过程会分心吗？':'上网课是否会分心',\n",
    "    '5、您觉得课堂教学和网络教学哪个比较好？':'课堂教学和网络教学偏好',\n",
    "    '6、在上网课前，您会预先安排自己的学习过程吗？':'上网课前是否提前预习',\n",
    "    '7、在上网课时有不懂的问题会向老师请教吗？':'有疑问是否会向老师请教',\n",
    "    '8、在课堂，你会参加老师和同学们的讨论中吗？':'是否会参与讨论',\n",
    "    '9、你们认为线上学习的气氛如何？':'线上学习的气氛',\n",
    "    '10、您的作业完成情况如何？':'作业完成情况',\n",
    "    '11、您认为影响线上学习的因素有哪些？【多选】':'影响线上学习的因素',\n",
    "    '12、您认为线上学习中教师教学存在的问题是？【多选】':'线上学习中教师教学存在的问题',\n",
    "    '13、您觉得自己线上学习效率高吗？':'线上学习效率',\n",
    "\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "df1['填写问卷时长'] = df1['所用时间'].str.rstrip('秒')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>序号</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>提交答卷时间</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>所用时间</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>来自IP</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>性别</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>年级</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>网课数量多少</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>上网课是否会分心</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>课堂教学和网络教学偏好</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>上网课前是否提前预习</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>有疑问是否会向老师请教</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>是否会参与讨论</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>线上学习的气氛</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>作业完成情况</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11、您认为影响线上学习的因素有哪些？</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12、您认为线上学习中教师教学存在的问题是？</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>线上学习效率</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>填写问卷时长</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             0\n",
       "序号                       int64\n",
       "提交答卷时间                  object\n",
       "所用时间                    object\n",
       "来自IP                    object\n",
       "性别                      object\n",
       "年级                      object\n",
       "网课数量多少                  object\n",
       "上网课是否会分心                object\n",
       "课堂教学和网络教学偏好             object\n",
       "上网课前是否提前预习              object\n",
       "有疑问是否会向老师请教             object\n",
       "是否会参与讨论                 object\n",
       "线上学习的气氛                 object\n",
       "作业完成情况                  object\n",
       "11、您认为影响线上学习的因素有哪些？     object\n",
       "12、您认为线上学习中教师教学存在的问题是？  object\n",
       "线上学习效率                  object\n",
       "填写问卷时长                  object"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.dtypes.to_frame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '提交答卷时间', '所用时间', '来自IP', '性别', '年级', '网课数量多少', '上网课是否会分心',\n",
       "       '课堂教学和网络教学偏好', '上网课前是否提前预习', '有疑问是否会向老师请教', '是否会参与讨论', '线上学习的气氛',\n",
       "       '作业完成情况', '11、您认为影响线上学习的因素有哪些？', '12、您认为线上学习中教师教学存在的问题是？', '线上学习效率',\n",
       "       '填写问卷时长'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>序号</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>提交答卷时间</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>所用时间</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>来自IP</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>性别</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>年级</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>网课数量多少</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>上网课是否会分心</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>课堂教学和网络教学偏好</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>上网课前是否提前预习</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>有疑问是否会向老师请教</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>是否会参与讨论</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>线上学习的气氛</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>作业完成情况</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11、您认为影响线上学习的因素有哪些？</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12、您认为线上学习中教师教学存在的问题是？</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>线上学习效率</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>填写问卷时长</th>\n",
       "      <td>int32</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                               0\n",
       "序号                         int64\n",
       "提交答卷时间                    object\n",
       "所用时间                      object\n",
       "来自IP                      object\n",
       "性别                      category\n",
       "年级                      category\n",
       "网课数量多少                  category\n",
       "上网课是否会分心                category\n",
       "课堂教学和网络教学偏好             category\n",
       "上网课前是否提前预习              category\n",
       "有疑问是否会向老师请教             category\n",
       "是否会参与讨论                 category\n",
       "线上学习的气氛                 category\n",
       "作业完成情况                  category\n",
       "11、您认为影响线上学习的因素有哪些？     category\n",
       "12、您认为线上学习中教师教学存在的问题是？  category\n",
       "线上学习效率                  category\n",
       "填写问卷时长                     int32"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = df1.astype({\n",
    "    '性别': 'category',\n",
    "    '年级': 'category',\n",
    "   '网课数量多少': 'category',\n",
    "   '上网课是否会分心': 'category',\n",
    "   '课堂教学和网络教学偏好': 'category',\n",
    "   '上网课前是否提前预习': 'category',\n",
    "    '有疑问是否会向老师请教': 'category',\n",
    "   '是否会参与讨论': 'category',\n",
    "   '线上学习的气氛': 'category',\n",
    "    '作业完成情况': 'category',\n",
    "   '11、您认为影响线上学习的因素有哪些？': 'category',\n",
    "   '12、您认为线上学习中教师教学存在的问题是？': 'category',\n",
    "   '线上学习效率': 'category',\n",
    "   '填写问卷时长': 'int',\n",
    "})\n",
    "df2.dtypes.to_frame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      1\n",
       "1      1\n",
       "2      1\n",
       "3      1\n",
       "4      1\n",
       "      ..\n",
       "222    0\n",
       "223    1\n",
       "224    1\n",
       "225    0\n",
       "226    0\n",
       "Length: 227, dtype: int8"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2['性别'].cat.codes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "女    123\n",
      "男    104\n",
      "Name: 性别, dtype: int64\n",
      "大二    116\n",
      "大三     49\n",
      "大一     43\n",
      "大四     19\n",
      "Name: 年级, dtype: int64\n",
      "还可以    138\n",
      "多       69\n",
      "不多      20\n",
      "Name: 网课数量多少, dtype: int64\n",
      "偶尔会    145\n",
      "经常会     62\n",
      "不会      20\n",
      "Name: 上网课是否会分心, dtype: int64\n",
      "课堂教学    193\n",
      "一样       28\n",
      "网络教学      6\n",
      "Name: 课堂教学和网络教学偏好, dtype: int64\n",
      "偶尔会    135\n",
      "不会      59\n",
      "会       33\n",
      "Name: 上网课前是否提前预习, dtype: int64\n",
      "会     122\n",
      "不会    105\n",
      "Name: 有疑问是否会向老师请教, dtype: int64\n",
      "有时      138\n",
      "积极参加     65\n",
      "不参加      24\n",
      "Name: 是否会参与讨论, dtype: int64\n",
      "气氛一般     137\n",
      "比较死板加     48\n",
      "融洽，活跃     42\n",
      "Name: 线上学习的气氛, dtype: int64\n",
      "能够及时完成      195\n",
      "不能及时完成       18\n",
      "老师没有布置作业     14\n",
      "Name: 作业完成情况, dtype: int64\n",
      "自律性差┋没有良好的学习环境┋缺乏学习动力       70\n",
      "自律性差┋没有良好的学习环境┋缺乏学习动力┋其它    27\n",
      "其它                          21\n",
      "自律性差                        21\n",
      "自律性差┋缺乏学习动力                 20\n",
      "没有良好的学习环境┋缺乏学习动力            15\n",
      "没有良好的学习环境                   14\n",
      "自律性差┋没有良好的学习环境              12\n",
      "没有良好的学习环境┋其它                 5\n",
      "没有良好的学习环境┋缺乏学习动力┋其它          5\n",
      "缺乏学习动力                       5\n",
      "缺乏学习动力┋其它                    5\n",
      "自律性差┋缺乏学习动力┋其它               3\n",
      "自律性差┋其它                      2\n",
      "自律性差┋没有良好的学习环境┋其它            2\n",
      "Name: 11、您认为影响线上学习的因素有哪些？, dtype: int64\n",
      "其他                                    54\n",
      "互动过少┋操作电子学习设备水平能力较低┋教师教学内容传达不清晰       45\n",
      "互动过少                                  28\n",
      "互动过少┋其他                               19\n",
      "操作电子学习设备水平能力较低                        18\n",
      "互动过少┋操作电子学习设备水平能力较低                   11\n",
      "互动过少┋操作电子学习设备水平能力较低┋教师教学内容传达不清晰┋其他    11\n",
      "互动过少┋教师教学内容传达不清晰                      10\n",
      "操作电子学习设备水平能力较低┋教师教学内容传达不清晰             9\n",
      "教师教学内容传达不清晰                            8\n",
      "互动过少┋操作电子学习设备水平能力较低┋其他                 4\n",
      "操作电子学习设备水平能力较低┋其他                      4\n",
      "互动过少┋教师教学内容传达不清晰┋其他                    3\n",
      "教师教学内容传达不清晰┋其他                         2\n",
      "操作电子学习设备水平能力较低┋教师教学内容传达不清晰┋其他          1\n",
      "Name: 12、您认为线上学习中教师教学存在的问题是？, dtype: int64\n",
      "一般    153\n",
      "不高     61\n",
      "高      13\n",
      "Name: 线上学习效率, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "### 查找异常值\n",
    "#### 类别变量\n",
    "mytools.print_all_cats(df2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "count    227.000000\n",
      "mean      63.321586\n",
      "std       50.861930\n",
      "min       15.000000\n",
      "25%       40.000000\n",
      "50%       50.000000\n",
      "75%       73.000000\n",
      "max      592.000000\n",
      "Name: 填写问卷时长, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "#### 查看int类型的异常值\n",
    "mytools.print_all_int(df2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    227.000000\n",
       "mean      63.321586\n",
       "std       50.861930\n",
       "min       15.000000\n",
       "25%       40.000000\n",
       "50%       50.000000\n",
       "75%       73.000000\n",
       "max      592.000000\n",
       "Name: 填写问卷时长, dtype: float64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2['填写问卷时长'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "hovertemplate": "填写问卷时长=%{y}<extra></extra>",
         "legendgroup": "",
         "marker": {
          "color": "#636efa"
         },
         "name": "",
         "notched": false,
         "offsetgroup": "",
         "orientation": "v",
         "showlegend": false,
         "type": "box",
         "x0": " ",
         "xaxis": "x",
         "y": [
          40,
          62,
          31,
          71,
          72,
          60,
          36,
          50,
          91,
          73,
          15,
          89,
          52,
          100,
          175,
          136,
          129,
          41,
          23,
          342,
          155,
          77,
          58,
          37,
          30,
          86,
          55,
          41,
          104,
          120,
          56,
          80,
          36,
          65,
          88,
          45,
          37,
          43,
          44,
          40,
          60,
          47,
          50,
          57,
          71,
          46,
          58,
          68,
          53,
          44,
          61,
          46,
          89,
          36,
          50,
          34,
          59,
          29,
          66,
          89,
          83,
          175,
          56,
          67,
          85,
          53,
          23,
          73,
          33,
          42,
          147,
          86,
          65,
          56,
          40,
          24,
          98,
          135,
          72,
          70,
          102,
          60,
          121,
          39,
          61,
          88,
          37,
          60,
          55,
          51,
          41,
          76,
          49,
          26,
          39,
          86,
          42,
          49,
          66,
          48,
          35,
          45,
          27,
          41,
          74,
          41,
          95,
          46,
          56,
          47,
          42,
          40,
          45,
          50,
          41,
          48,
          51,
          82,
          36,
          43,
          76,
          44,
          33,
          48,
          592,
          46,
          40,
          78,
          33,
          38,
          32,
          60,
          54,
          41,
          76,
          48,
          60,
          116,
          25,
          124,
          203,
          59,
          45,
          82,
          52,
          90,
          77,
          91,
          51,
          49,
          28,
          54,
          69,
          73,
          47,
          63,
          41,
          43,
          44,
          46,
          45,
          67,
          32,
          52,
          41,
          34,
          45,
          59,
          49,
          57,
          47,
          41,
          30,
          30,
          31,
          40,
          33,
          60,
          34,
          37,
          184,
          35,
          47,
          36,
          34,
          37,
          31,
          40,
          42,
          80,
          31,
          25,
          44,
          108,
          57,
          84,
          70,
          88,
          27,
          154,
          47,
          56,
          58,
          25,
          82,
          76,
          165,
          66,
          86,
          77,
          127,
          45,
          78,
          25,
          54,
          34,
          81,
          31,
          43,
          41,
          27,
          34,
          25,
          26,
          44,
          35,
          35
         ],
         "y0": " ",
         "yaxis": "y"
        }
       ],
       "layout": {
        "boxmode": "group",
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "fillpattern": {
             "fillmode": "overlay",
             "size": 10,
             "solidity": 0.2
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "xaxis": {
         "anchor": "y",
         "domain": [
          0,
          1
         ]
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "填写问卷时长"
         }
        }
       }
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = px.box(df2, y=\"填写问卷时长\")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"删除填写时间过短及过长的的数据\"\"\"\n",
    "df3 = df2.drop(index = df2.query('(填写问卷时长 <= 30) or (填写问卷时长 > 500)').index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "bingroup": "x",
         "hovertemplate": "填写问卷时长=%{x}<br>count=%{y}<extra></extra>",
         "legendgroup": "",
         "marker": {
          "color": "#636efa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "",
         "offsetgroup": "",
         "orientation": "v",
         "showlegend": false,
         "type": "histogram",
         "x": [
          40,
          62,
          31,
          71,
          72,
          60,
          36,
          50,
          91,
          73,
          89,
          52,
          100,
          175,
          136,
          129,
          41,
          342,
          155,
          77,
          58,
          37,
          86,
          55,
          41,
          104,
          120,
          56,
          80,
          36,
          65,
          88,
          45,
          37,
          43,
          44,
          40,
          60,
          47,
          50,
          57,
          71,
          46,
          58,
          68,
          53,
          44,
          61,
          46,
          89,
          36,
          50,
          34,
          59,
          66,
          89,
          83,
          175,
          56,
          67,
          85,
          53,
          73,
          33,
          42,
          147,
          86,
          65,
          56,
          40,
          98,
          135,
          72,
          70,
          102,
          60,
          121,
          39,
          61,
          88,
          37,
          60,
          55,
          51,
          41,
          76,
          49,
          39,
          86,
          42,
          49,
          66,
          48,
          35,
          45,
          41,
          74,
          41,
          95,
          46,
          56,
          47,
          42,
          40,
          45,
          50,
          41,
          48,
          51,
          82,
          36,
          43,
          76,
          44,
          33,
          48,
          46,
          40,
          78,
          33,
          38,
          32,
          60,
          54,
          41,
          76,
          48,
          60,
          116,
          124,
          203,
          59,
          45,
          82,
          52,
          90,
          77,
          91,
          51,
          49,
          54,
          69,
          73,
          47,
          63,
          41,
          43,
          44,
          46,
          45,
          67,
          32,
          52,
          41,
          34,
          45,
          59,
          49,
          57,
          47,
          41,
          31,
          40,
          33,
          60,
          34,
          37,
          184,
          35,
          47,
          36,
          34,
          37,
          31,
          40,
          42,
          80,
          31,
          44,
          108,
          57,
          84,
          70,
          88,
          154,
          47,
          56,
          58,
          82,
          76,
          165,
          66,
          86,
          77,
          127,
          45,
          78,
          54,
          34,
          81,
          31,
          43,
          41,
          34,
          44,
          35,
          35
         ],
         "xaxis": "x",
         "yaxis": "y"
        }
       ],
       "layout": {
        "barmode": "relative",
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "fillpattern": {
             "fillmode": "overlay",
             "size": 10,
             "solidity": 0.2
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "xaxis": {
         "anchor": "y",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "填写问卷时长"
         }
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "count"
         }
        }
       }
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = px.histogram(df3, x=\"填写问卷时长\")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df3.copy()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "样本背景\n",
    "\n",
    "本次描述性研究的样本背景变量只有一个，即性别，将样本的性别比例与总体的性别比例进行对比，可进行样本质量的评估。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>性别</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>女</td>\n",
       "      <td>114</td>\n",
       "      <td>55.07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>男</td>\n",
       "      <td>93</td>\n",
       "      <td>44.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   性别   个数    百分比\n",
       "0   女  114  55.07\n",
       "1   男   93  44.93\n",
       "2  总和  207  100.0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mytools.gen_percent_table(df,'性别')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "样本中男女比例为55：45，与总体中的51:49相当，因故可认为样本的质量是可以保证的。\n",
    "\n",
    "    \n",
    "数据获取方式是由问卷调查而得，问卷调查时间为2022年11月21日至12月1日，总样本量为227人，有效样本量为207人。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '提交答卷时间', '所用时间', '来自IP', '性别', '年级', '网课数量多少', '上网课是否会分心',\n",
       "       '课堂教学和网络教学偏好', '上网课前是否提前预习', '有疑问是否会向老师请教', '是否会参与讨论', '线上学习的气氛',\n",
       "       '作业完成情况', '11、您认为影响线上学习的因素有哪些？', '12、您认为线上学习中教师教学存在的问题是？', '线上学习效率',\n",
       "       '填写问卷时长'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['不多', '多', '还可以'], ordered=False)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 确保变量类型合适\n",
    "df['网课数量多少'].dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_type = CategoricalDtype(categories=['不多', '多', '还可以'],\n",
    "                            ordered=True)\n",
    "df['网课数量多少'] = df['网课数量多少'].astype(cat_type)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CategoricalDtype(categories=['不多', '多', '还可以'], ordered=True)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['网课数量多少'].dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>网课数量多少</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "      <th>累计百分比（%）</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>不多</td>\n",
       "      <td>19</td>\n",
       "      <td>9.18</td>\n",
       "      <td>9.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>多</td>\n",
       "      <td>66</td>\n",
       "      <td>31.88</td>\n",
       "      <td>41.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>还可以</td>\n",
       "      <td>122</td>\n",
       "      <td>58.94</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  网课数量多少   个数    百分比 累计百分比（%）\n",
       "0     不多   19   9.18     9.18\n",
       "1      多   66  31.88    41.06\n",
       "2    还可以  122  58.94    100.0\n",
       "3     总和  207  100.0         "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pandas.api.types import CategoricalDtype\n",
    "cat_dtype = CategoricalDtype(\n",
    "    categories=['不多', '多', '还可以'], ordered=True)\n",
    "df = df.astype({'网课数量多少':cat_dtype})\n",
    "mytools.ordinal_desc(df,'网课数量多少')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "hovertemplate": "网课数量多少=%{x}<br>count=%{y}<extra></extra>",
         "legendgroup": "",
         "marker": {
          "color": "#636efa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "",
         "offsetgroup": "",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "多",
          "还可以",
          "多",
          "还可以",
          "多",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "不多",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "多",
          "多",
          "还可以",
          "多",
          "还可以",
          "多",
          "还可以",
          "多",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "多",
          "多",
          "还可以",
          "多",
          "多",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "多",
          "多",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "多",
          "多",
          "多",
          "多",
          "还可以",
          "多",
          "多",
          "不多",
          "不多",
          "不多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "不多",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "多",
          "多",
          "不多",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "多",
          "多",
          "不多",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "多",
          "多",
          "多",
          "还可以",
          "多",
          "多",
          "还可以",
          "多",
          "多",
          "还可以",
          "多",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "多",
          "还可以",
          "还可以",
          "多",
          "多",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "多",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "不多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "不多",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "还可以",
          "多",
          "还可以",
          "多",
          "还可以",
          "多",
          "不多",
          "多",
          "还可以",
          "还可以",
          "还可以",
          "不多",
          "不多",
          "多",
          "还可以"
         ],
         "xaxis": "x",
         "y": [
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1
         ],
         "yaxis": "y"
        }
       ],
       "layout": {
        "barmode": "relative",
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "fillpattern": {
             "fillmode": "overlay",
             "size": 10,
             "solidity": 0.2
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "xaxis": {
         "anchor": "y",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "网课数量多少"
         }
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "count"
         }
        }
       }
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = px.bar(df,x=\"网课数量多少\")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = df['网课数量多少'].value_counts(sort=False,\n",
    "                                     normalize=True).to_frame() * 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "hovertemplate": "index=%{x}<br>网课数量多少=%{text}<extra></extra>",
         "legendgroup": "",
         "marker": {
          "color": "#636efa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "",
         "offsetgroup": "",
         "orientation": "v",
         "showlegend": false,
         "text": [
          9.178743961352657,
          31.88405797101449,
          58.93719806763285
         ],
         "textposition": "outside",
         "texttemplate": "%{text:.1f}%",
         "type": "bar",
         "x": [
          "不多",
          "多",
          "还可以"
         ],
         "xaxis": "x",
         "y": [
          9.178743961352657,
          31.88405797101449,
          58.93719806763285
         ],
         "yaxis": "y"
        }
       ],
       "layout": {
        "barmode": "relative",
        "height": 500,
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "white",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "white",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "#C8D4E3",
             "linecolor": "#C8D4E3",
             "minorgridcolor": "#C8D4E3",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "#C8D4E3",
             "linecolor": "#C8D4E3",
             "minorgridcolor": "#C8D4E3",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "fillpattern": {
             "fillmode": "overlay",
             "size": 10,
             "solidity": 0.2
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "white",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "#C8D4E3"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "white",
          "polar": {
           "angularaxis": {
            "gridcolor": "#EBF0F8",
            "linecolor": "#EBF0F8",
            "ticks": ""
           },
           "bgcolor": "white",
           "radialaxis": {
            "gridcolor": "#EBF0F8",
            "linecolor": "#EBF0F8",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "white",
            "gridcolor": "#DFE8F3",
            "gridwidth": 2,
            "linecolor": "#EBF0F8",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "#EBF0F8"
           },
           "yaxis": {
            "backgroundcolor": "white",
            "gridcolor": "#DFE8F3",
            "gridwidth": 2,
            "linecolor": "#EBF0F8",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "#EBF0F8"
           },
           "zaxis": {
            "backgroundcolor": "white",
            "gridcolor": "#DFE8F3",
            "gridwidth": 2,
            "linecolor": "#EBF0F8",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "#EBF0F8"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "#DFE8F3",
            "linecolor": "#A2B1C6",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "#DFE8F3",
            "linecolor": "#A2B1C6",
            "ticks": ""
           },
           "bgcolor": "white",
           "caxis": {
            "gridcolor": "#DFE8F3",
            "linecolor": "#A2B1C6",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "#EBF0F8",
           "linecolor": "#EBF0F8",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "#EBF0F8",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "#EBF0F8",
           "linecolor": "#EBF0F8",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "#EBF0F8",
           "zerolinewidth": 2
          }
         }
        },
        "width": 700,
        "xaxis": {
         "anchor": "y",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "网课数量多少"
         }
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "比例(%)"
         }
        }
       }
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = px.bar(\n",
    "    result,\n",
    "    x=result.index,\n",
    "    y='网课数量多少',\n",
    "    text='网课数量多少',\n",
    "    text_auto=True,\n",
    "    # range_y=[0, 60],\n",
    "    width=700,\n",
    "    height=500,\n",
    "    template='plotly_white'\n",
    ")\n",
    "fig.update_traces(\n",
    "    texttemplate='%{text:.1f}%',\n",
    "    textposition='outside',\n",
    ")\n",
    "fig.update_layout(\n",
    "    xaxis_title=\"网课数量多少\",\n",
    "    yaxis_title=\"比例(%)\",\n",
    ")\n",
    "fig.write_image(\"fig1.svg\")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>网课数量多少</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不多</th>\n",
       "      <td>10.0</td>\n",
       "      <td>12.20</td>\n",
       "      <td>4.63</td>\n",
       "      <td>27.78</td>\n",
       "      <td>9.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>多</th>\n",
       "      <td>30.0</td>\n",
       "      <td>17.07</td>\n",
       "      <td>43.52</td>\n",
       "      <td>0.00</td>\n",
       "      <td>31.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>还可以</th>\n",
       "      <td>60.0</td>\n",
       "      <td>70.73</td>\n",
       "      <td>51.85</td>\n",
       "      <td>72.22</td>\n",
       "      <td>58.94</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级        大一     大三     大二     大四     合计\n",
       "网课数量多少                                  \n",
       "不多      10.0  12.20   4.63  27.78   9.18\n",
       "多       30.0  17.07  43.52   0.00  31.88\n",
       "还可以     60.0  70.73  51.85  72.22  58.94"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['网课数量多少'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>性别</th>\n",
       "      <th>女</th>\n",
       "      <th>男</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>网课数量多少</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不多</th>\n",
       "      <td>6.14</td>\n",
       "      <td>12.90</td>\n",
       "      <td>9.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>多</th>\n",
       "      <td>35.96</td>\n",
       "      <td>26.88</td>\n",
       "      <td>31.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>还可以</th>\n",
       "      <td>57.89</td>\n",
       "      <td>60.22</td>\n",
       "      <td>58.94</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "性别          女      男     合计\n",
       "网课数量多少                     \n",
       "不多       6.14  12.90   9.18\n",
       "多       35.96  26.88  31.88\n",
       "还可以     57.89  60.22  58.94"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['网课数量多少'],\n",
    "        df['性别'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由上数据可知，大部分大学生的网课数量在其可以接受的范围之内，其中网课数量最多的是大一和大二两个年级"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>上网课是否会分心</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>偶尔会</td>\n",
       "      <td>132</td>\n",
       "      <td>63.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>经常会</td>\n",
       "      <td>57</td>\n",
       "      <td>27.54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>不会</td>\n",
       "      <td>18</td>\n",
       "      <td>8.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.01</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  上网课是否会分心   个数     百分比\n",
       "0      偶尔会  132   63.77\n",
       "1      经常会   57   27.54\n",
       "2       不会   18     8.7\n",
       "3       总和  207  100.01"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = pd.DataFrame()\n",
    "b['上网课是否会分心'] = df['上网课是否会分心'].value_counts().index\n",
    "b['个数'] = df['上网课是否会分心'].value_counts().values\n",
    "b['百分比'] = df['上网课是否会分心'].value_counts(normalize=True).values * 100\n",
    "b['百分比'] = b['百分比'].apply(lambda x: round(x, 2))\n",
    "total_row = pd.Series({'上网课是否会分心':'总和','个数':b['个数'].sum(),'百分比':b['百分比'].sum()}).to_frame().T\n",
    "pd.concat([b,total_row],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEQAAANnCAYAAAA4Go01AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAB7CAAAewgFu0HU+AAB5ZklEQVR4nOzdeZhWdf0//ucMAwOM7Cqm4I64b7iEGGiKlmvlUrnGV63UNNNcsh3LpbTSzExSM/e01FJRUXNLxdwKF9xFNhEEAQdmmOX+/eGP+UjMIMgAg+fxuK77arjf2+tMeJj7Oee8T1mpVCoFAAAAoEDKV3QBAAAAAMubQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwllsgcuyxx6asrCxvvvnmIvtNmTIlxx57bPr27ZvKyspsvPHG+c1vfpPGxsZFjnv66afzxS9+Mb169UqnTp2y0047ZeTIka14BAAAAMAnRVmpVCot60XOO++8nHHGGUmSN954I+uuu26z/caNG5edd945EyZM+KC4srLML++II47IVVdd1ey4kSNHZv/9909dXd0C48rKyjJixIgcddRRrXxEAAAAwMpsmV8h8qtf/Srf+973PrJfXV1d9tprr0yYMCG9evXKrbfemrq6uowdOzZbb711/vznP+fGG29caNyrr76aAw88MHV1ddlmm23y7LPPpr6+PnfffXe6d++eE088MW+88cayODQAAABgJbXMApE5c+bkq1/9ak455ZT06dPnI/tfdtlleeGFF1JWVpZbbrkl+++/f9q1a5f+/fvnr3/9ayoqKnLSSSeloaFhgXHf+973MmfOnPTu3TujRo3KVlttlfLy8uyxxx658MILM2fOnJx++unL6jABAACAldAyC0R+8pOf5IYbbsiOO+6YJ5544iP7X3rppUmSffbZJ5/5zGcWaFt//fXzxS9+MW+//XYeffTRpvffeeed/O1vf0uSnHbaaenVq9cC47761a9mzTXXzB133JGampqlPSQAAADgE2KZBSLl5eU566yz8sgjj2SNNdZYZN8ZM2bkueeeS5IcfPDBzfbZa6+9kmSBjVL/9a9/NW22etBBBy00pqKiIkOHDs2cOXPy0EMPfazjAAAAAD55KpbVxGeddVbat2+/WH1fffXVpq8HDhzYbJ8tt9wySTJ27NiFxvXp0yd9+/b9yHF77LHHYtUz3/zNXVtSU1OTsWPHpnfv3llttdVSUbHMvp0AAABQWPX19Zk6dWqSZIsttkjHjh2Xes5l9gl+ccOQJHn33XebxrT0BJrVV189SRZ4bO/8cRtttFGLczc3bnG1FLIAAAAAK8YTTzyR7bfffqnnWeZPmVkctbW1SZKuXbumXbt2zfbp0aNHkmTy5MkLjZvftrjjAAAAgGJrE/d4zA9BOnfu3GKfDh06JEnmzp271OMW1/jx4z+yfaeddkryQUL1qU99aonXAAAAABZt8uTJ2WGHHZIkq622WqvM2SYCkU6dOiX5v/CiOeXlH1zMMmfOnKUet7gW53HB833qU59aov4AAADAkmut/TvbxC0z829rmTRpUot9ZsyYkSQplUoLjZs4ceISjQMAAACKrU0EImuvvXaSD25refvtt5vtM2XKlCTJKqusstC4N954o8W5mxsHAAAAFFubCERWXXXVpnDjySefbLbP448/nuT/QpAkGTBgQJLktddey3vvvbfY4wAAAIBiaxOBSJIMHTo0SXLDDTc02z5q1Kgkybbbbtv03nrrrZcNNtgg9fX1ufnmmxca09DQkPvvv3+hcQAAAECxtZlA5Gtf+1qS5MYbb8zTTz+9QNvYsWNzyy23JEn22WefZsf97Gc/y+zZsxdou+qqqzJp0qRUVFRkzz33XDaFAwAAACudNhOI7Lzzzhk0aFDq6+uz9957584770xtbW3++c9/5vOf/3zmzZuXDTbYIPvtt98C477xjW+ke/fuGTduXPbYY4/897//TXV1dS6//PIcf/zxSZJDDjkka6yxxoo4LAAAAKANahOP3Z3v2muvzeDBg/PWW29l7733XqCtY8eOueqqq9K+ffsF3l9ttdVy3XXX5Utf+lIef/zxbLXVVgu0r7feejn//POXee0AAADAymO5XSFSKpVSKpWy7rrrtthnnXXWyZNPPpmvfe1r6dChQ9P7O+ywQx566KEMGjSo2XGf//zn8/jjj2eXXXZpeq+8vDwHHXRQHnvssay22mqtdRgAAADAJ0BZqVQqregimjNz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8CTJb37zm6y99tqL7N+xY8dUVFQs9P6sWbPypz/9KUmy//77t0pta621VpLkzjvvXKjt9ddfzwsvvJAkGTBgQKusBwAAsCwIRKCNmTdvXo444ojU1dVlvfXWy/Tp03PSSSfl1FNPzU033ZR58+Yt1jyjR4/ObrvtlvHjx2fAgAE5/vjjW6W+r3/960mS4447Ltdcc02mTp2a9957L/fcc0/23nvv1NXV5TOf+UwGDx7cKusBAAAsCwv/ShlYoc4///w899xzSZLJkyfn1ltvTefOnfPf//43559/fjbaaKNcd911LV6Bce655+biiy9uurVlzz33zHXXXZfKyspWqe+MM87IvHnz8vOf/zyHH374Am1lZWU57LDD8rvf/a7FW3wAAADaAleIQBvy9ttv5+yzz06SDBw4MG+88UYefvjh3H333Zk4cWJ+97vf5fXXX8+uu+6a559/vtk56uvrU11d3fTn8ePHZ+zYsa1W47x58zJr1qw0NDQs1NahQ4ckybRp01ptPQAAgGVBIAJtyCWXXJLq6upUVFTkxhtvXGAj1PLy8hx33HE54YQTMnv27Pz4xz9udo4f/OAHeffdd3P//fdn0KBBeeGFF7LHHnvkqaeeapUajzvuuPzqV79KY2NjOnTokB122CHbb799OnfunNra2lxzzTXZbrvt8tJLL7XKegAAAMuCQATakPvvvz9Jstdee6Vv377N9vnSl76UJLn99tvT2NjYbJ/y8vLsuuuuuffeezNgwIBUV1e3yh4i//nPf3LFFVck+WCT1okTJ2b06NF54oknMm7cuKZHA8+YMaPFwAYAAKAtEIhAGzJ16tQkyY477thin969eydJamtr88477yxyvo4dO+bb3/52kuSJJ57I7Nmzl6q+W2+9NckHj9y94YYbsuqqqza1rbrqqrnkkkvy5S9/OUly1113LdVaAAAAy5JABNqQrl27Jkm6d+/eYp8PhxpVVVWpra1tetRtczbccMMkSalUWupA5MMbtXbs2LHZPgcddFCSZObMmZk7d+5SrQcAALCsCESgDdlss82SZJGboD7++ONJkrXWWitVVVX51Kc+lc0226zFPULeeuutJElFRUV69eq1VPVVVVUl+b/NU5sz/+kylZWV6dSp01KtBwAAsKwIRKAN2XvvvZMkV111VSZNmrRQ++zZs/PrX/86SbLvvvumvLw8e+yxR5LkhBNOSF1d3UJjfvvb3yZJBg0atNSP3t10002TJP/9739b7PPAAw8kSXbaaaelWgsAAGBZEohAG3LAAQdkm222yaxZs7LHHnvkvvvuS11dXerr63P//fdn8ODBefXVV9OxY8ecdtppSZLvfe97qaioyGOPPZahQ4fmiSeeyLx58zJlypR84xvfyL/+9a+Ul5fnpz/96VLX96UvfSldunTJAw88kEcffXSh9kcffTSXXXZZkuSUU05Z6vUAAACWlbJSqVRa0UWsrCZMmND0JJDx48enT58+K7giPglef/317L///nnuueeS/N8tKPP/U23Xrl3+8pe/ND1tJkn+9Kc/5Zhjjkl9fX3TmPn9O3TokEsvvTTDhg1bYJ1x48alf//+SZIRI0bk8MMPX6z6/vGPf+QrX/lKGhoa8qUvfSmbbrpp5s2bl6effjojR45MY2NjTj755FxwwQVL8V0AAAD4P8vi83fFUs8AtKr1118/o0ePzrXXXpvrr78+L7/8ct5555107do1AwcOzBlnnJFBgwYtMOZrX/tattlmm5x33nn55z//mWnTpmX11VfPHnvskVNPPbXpVpcPK5VKqa2tTZI0NDQsdn377rtv/vOf/+TCCy/M/fffn7///e+pra1Nz549s+eee+aYY47JF7/4xaX7JgAAACxjrhBZCq4QAQAAgGVvWXz+tocIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4VSs6AJYMdY9444VXQKwAr157t4rugQAAFihXCECAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACicNh+IlEql7LHHHikrK8vgwYPT2NjYbL/Zs2fnjDPOyAYbbJDKysqsu+66+fGPf5za2trlXDEAAADQ1lWs6AI+yu9+97uMGjUqVVVVufLKK1NevnCGM2PGjAwZMiRjxoxJkpSVlWXcuHEZPnx4Hnnkkdx9992pqGjzhwoAAAAsJ236CpGXX345p59+epLkF7/4RTbYYINm+335y1/OmDFj0qlTp1xxxRWpqanJ+PHjM3To0Nx///254IILlmfZAAAAQBvXZgORhoaGHHHEEZkzZ0523333HHvssc32u+OOOzJq1KgkyYgRIzJs2LB06NAhffr0yU033ZQePXrkJz/5Sd59993lWT4AAADQhrXZQOScc87J6NGj07Vr11x++eUpKytrtt+ll16aJNliiy1y6KGHLtDWrVu3HH300ampqcmdd965zGsGAAAAVg5tMhB55plnMnz48CTJb37zm6y99tot9n344YeTJAcffHCz7XvttVeSZOTIka1cJQAAALCyanM7jc6bNy9HHHFE6urqst5662X69Ok56aST0r59++ywww7Zf//906FDhyTJ1KlTM3PmzCTJwIEDm51vyy23TJKMHTt2+RwAAAAA0Oa1uUDk/PPPz3PPPZckmTx5cm699dZ07tw5//3vf3P++edno402ynXXXZcBAwYssC/IRhtt1Ox8PXv2TEVFRd58880lrmXChAmLbJ88efISzwkAAACseG0qEHn77bdz9tlnJ/ngio+//e1vWWONNZIkjY2NufTSS/Ptb387u+66ax577LHU19c3je3Ro0eL83bv3j3Tpk1LbW1tKisrF7uevn37fswjAQAAANqyNrWHyCWXXJLq6upUVFTkxhtvbApDkqS8vDzHHXdcTjjhhMyePTs//vGP065du6b2zp07tzjv/Fts5s6du+yKBwAAAFYabSoQuf/++5N8sBFqS1dnfOlLX0qS3H777enUqVOSpKKiIuXlLR/K/LY5c+YsUT3jx49f5OuJJ55YovkAAACAtqFN3TIzderUJMmOO+7YYp/evXsnSWpra5sCkfr6+kyZMqWp7X/NmDEjSVIqlZaonj59+ixRfwAAAGDl0KauEOnatWuSD/b8aMns2bObvu7SpUuqqqqSJG+88Uaz/aurq1NdXZ0kWWWVVVqpUgAAAGBl1qYCkc022yzJoh+R+/jjjydJ1lprrXTp0iUDBgxIkjz55JOL7N+1a9d069atNcsFAAAAVlJtKhDZe++9kyRXXXVVJk2atFD77Nmz8+tf/zpJsu+++yZJhg4dmiS54YYbmp1z1KhRSZJtt9221esFAAAAVk5tKhA54IADss0222TWrFnZY489ct9996Wuri719fW5//77M3jw4Lz66qvp2LFjTjvttCTJ4YcfnvLy8vzrX//KP/7xjwXmmzp1akaMGJEk2WeffZb78QAAAABtU5sKRMrLy3PzzTdn8803z/PPP5/dd989lZWV6dChQ3bbbbc8++yzadeuXa699tqst956SZJ11lknX/nKV5IkhxxySK699trMnTs3Tz31VPbcc89Mnz493bt3z7Bhw1bkoQEAAABtSJt6ykySrL/++hk9enSuvfbaXH/99Xn55ZfzzjvvpGvXrhk4cGDOOOOMDBo0aIExF198cV544YU8++yzOeywwxZoKy8vz2WXXZaePXsuz8MAAAAA2rA2F4gkSefOnXPMMcfkmGOOWaz+PXr0yCOPPJIf/ehH+cMf/tD0VJmNN944v/nNb7Lnnnsuy3IBAACAlUybDEQ+jqqqqlxwwQUZPnx4xo4dm65du6Zfv34ruiwAAACgDfrEBCLzVVVVNT2KFwAAAKA5bWpTVQAAAIDlQSACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwllpApHRo0enQ4cO2WWXXZptnz17ds4444xssMEGqayszLrrrpsf//jHqa2tXb6FAgAAAG1exYouYHHMnDkzX/3qV1NXV9ds+4wZMzJkyJCMGTMmSVJWVpZx48Zl+PDheeSRR3L33XenomKlOFQAAABgOVgprhD5+te/njfeeKPF9i9/+csZM2ZMOnXqlCuuuCI1NTUZP358hg4dmvvvvz8XXHDBcqwWAAAAaOvafCAyYsSI/OUvf0lZWVmz7XfccUdGjRrV1HfYsGHp0KFD+vTpk5tuuik9evTIT37yk7z77rvLs2wAAACgDWvTgcgLL7yQk046KWVlZTnllFOa7XPppZcmSbbYYosceuihC7R169YtRx99dGpqanLnnXcu83oBAACAlUObDURqamry5S9/OXPmzMl3v/vd7L333s32e/jhh5MkBx98cLPte+21V5Jk5MiRy6ZQAAAAYKXTZgORk046Kc8991x22mmnnH322c32mTp1ambOnJkkGThwYLN9ttxyyyTJ2LFjl02hAAAAwEqnTT565eabb84f/vCH9OrVKzfeeGOLT4j58L4gG220UbN9evbsmYqKirz55ptLXMeECRMW2T558uQlnhMAAABY8dpcIDJu3Lgcc8wxKSsry5///Of06dOnxb61tbVNX/fo0aPFft27d8+0adNSW1ubysrKxa6lb9++i90XAAAAWHm0qVtm6uvr89WvfjXvvfdeTjvttKb9P1rSrl27pq87d+7cYr8OHTokSebOnds6hQIAAAArtTZ1hcgPf/jDPPbYYxk0aFB+9rOffWT/Tp06JUkqKipSXt5ytjO/bc6cOenevfti1zN+/PhFtk+ePDk77LDDYs8HAAAAtA1tJhC59957c95552XVVVfNDTfc0OK+IR82/zaZ+vr6TJkyJb17926234wZM5IkpVJpiWpa1O06AAAAwMqrzQQi11xzTUqlUqZNm7bIvTsefPDBlJWVJUmuvPLKVFVVpbq6Om+88UazgUh1dXWqq6uTJKusssqyKR4AAABYqbSZPUTat2+fysrKFl/t27dPkpSVlTW9165duwwYMCBJ8uSTTzY77+OPP54k6dq1a7p167Z8DgYAAABo09pMIDJixIjU1NS0+LrnnnuSJIMHD2567/DDD8/QoUOTJDfccEOz844aNSpJsu222y6fAwEAAADavDYTiHxchx9+eMrLy/Ovf/0r//jHPxZomzp1akaMGJEk2WeffVZEeQAAAEAbtNIHIuuss06+8pWvJEkOOeSQXHvttZk7d26eeuqp7Lnnnpk+fXq6d++eYcOGreBKAQAAgLaizWyqujQuvvjivPDCC3n22Wdz2GGHLdBWXl6eyy67LD179lxB1QEAAABtzUpzhcguu+ySUqmUBx54YKG2Hj165JFHHsnJJ5+cqqqqpvc33njj3HnnnTnooIOWY6UAAABAW/eJuEIkSaqqqnLBBRdk+PDhGTt2bLp27Zp+/fqt6LIAAACANugTE4jMV1VV1fQoXgAAAIDmrDS3zAAAAAC0FoEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIANDmNTY2pr6+fkWXAQB8gghEAIA2afTo0fnCF76QXr16pV27dmnfvn022GCDnHXWWampqVmg77rrrpuysrLFeu2yyy6tUt/tt9/+kWtdc801rbIWAND6KlZ0AQAA/+uqq67KUUcdlYaGhnTu3Dmf/vSn88477+T111/Pj370o9x11125//77U1lZmSSprKxs+rol9fX1aWhoSHl56/w+6PHHH0+SVFRUpF27ds32ael9AGDFc4UIANCm/Oc//8nXv/71NDQ05JRTTsmUKVPy2GOP5dVXX83FF1+cJHn00Ufzy1/+smnMSy+9lJqamhZf1dXV2XTTTZMkRxxxRKvUOXr06CTJ9ddf3+K6X/3qV1tlLQCg9QlEAIA25bTTTsu8efNy2mmn5fzzz88qq6ySJCkrK8vxxx+f/fffP8kHQcTiuvzyyzNmzJhsv/32OfLII5e6xlKplH//+99Jku22226p5wMAlj+BCADQZlRXV6dz587Zfvvt86Mf/ajZPttvv32SZNKkSYs156xZs/LDH/4wZWVlufDCC1NWVrbUdb7wwguZOXNmevfunXXXXXep5wMAlj97iAAAbUZVVVVuueWWRfaZH4RUVVUt1pxnn3123nnnnRx66KEZOHDgUteYJI899liSZPDgwa0yHwCw/LlCBABYaTQ0NOS2225Lkuy2224f2X/q1Km56KKL0q5du/z0pz9ttTrmByKzZs3KnnvumTXWWCMdO3bM+uuvn69//et54YUXWm0tAGDZEIgAACuNK664IhMnTkySnHTSSR/Z/9e//nXmzp2bgw46KBtssEGr1fHoo48mSe6+++489thjWX/99bPjjjtm+vTpGTFiRLbeeutce+21rbYeAND6BCIAwEph8uTJOeOMM5Ikw4YNyzbbbLPI/rNmzcoll1ySJE3jWsO0adPy0ksvJUlOP/30TJw4MY8++mgefPDBjB8/PkcffXTq6upy1FFH5a233mq1dQGA1iUQAQDavMbGxhxxxBGZPn161llnnfzqV7/6yDGXXHJJZs6cmc997nPZaqutWq2Wzp075957783dd9+dc889N126dGlq69KlSy677LIMHDgwtbW1ueiii1ptXQCgdQlEAIA274c//GHuvffeVFZW5sYbb0z37t0X2b+xsbHp6pDjjjuuVWvp3LlzPvvZz2aPPfZotr2srCxHHXVUkuSuu+5q1bUBgNYjEAEA2rQbb7wxZ599dpLk97//fXbcccePHHPvvfdm/PjxWXXVVfO5z31uWZe4kD59+iRJXn/99eW+NgCweAQiAECb9dhjj2XYsGFJPtivY/7XH+XKK69MknzlK19J+/btW72uhoaG1NfXt9g+derUJB9cLQIAtE0CEQCgTXr++eez7777Nj0l5pxzzlmsce+9915uvfXWJMnhhx/e6nX9+Mc/Tq9evXLTTTe12Oef//xnkmSjjTZq9fUBgNYhEAEA2pznnnsuu+22W959990MGTIkV1999WJfbfH3v/89NTU1WWONNbLDDju0em1VVVWZOXNmLr744mbbX3311Vx33XVJki996Uutvj4A0DoEIgBAmzJlypTsvvvumTJlSrbYYovcdtttqaysXOzxd955Z5Jk1113XSb1HXXUUenevXseffTRnHrqqamtrW1qe+qpp7L77runpqYmffv2zQknnLBMagAAlp5ABABoU84///xMmTIlSfLiiy+md+/e6dixY7Ovhx56aIGxDQ0Nueeee5IsfiAyf66f/exni9W/V69eufrqq1NZWZnzzz8/a6yxRrbffvv0798/2223XcaNG5dNN90099xzz0c+DQcAWHEEIgBAm/Lss882fV1fX5/a2toWX42NjQuMffzxxzNjxowkix+IzJ9rUZuk/q999tknzzzzTA499NC0b98+//nPfzJz5sx87nOfy+WXX55nnnkmG2+88WLPBwAsfxUrugAAgA8bNWrUxx47aNCglEqlJRqzpP3n22STTXLNNdd8rLEAwIrnChEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCqVjRBQDAirDuGXes6BKAFezNc/de0SUAsAK5QgQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAA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IAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAICVzH333Ze99torq622Wjp06JA+ffpkl112yRVXXJGGhoZWWaOsrGyxX1/72tdaZU1YnipWdAEAAAAsvt///vc5/vjjUyqVkiTl5eWZOHFiJk6cmAcffDA33HBDbrvttnTq1Gmp1qmsrPzIPnV1dWlsbEx5ud+1s/LxtxYAAGAl8dJLL+XEE09M+/btM2LEiEyfPj11dXV56623cu6556aioiKjRo3KBRdcsNRr1dTULPI1derUrLbaakmSI444YqnXg+VNIAIAALCSuOGGG1JfX59vfOMbOfroo9OjR4+Ul5enb9++Of3003PCCSckSf7xj38s81rOOeecTJkyJQcccEB22WWXZb4etDaBCAAAwEpi4sSJSZJ+/fo127722msnSebOnbtM6xg3blx+/etfp2PHjjn//POX6VqwrAhEAAAAVhJrrbVWkuTOO+9stv32229PkgwYMGCZ1nH66aenpqYmp5xyStZdd91luhYsKwIRAACAlcShhx6aqqqq3HXXXTn22GPzyiuvZO7cuRk7dmyGDRuW++67L506dcrJJ5+8zGoYM2ZM/vKXv6Rr16459dRTl9k6sKwJRAAAAFYSG264YUaOHJn11lsvl156aTbaaKN07tw5m2yySf70pz9lk002yX333ZcttthimdVwzjnnpFQq5bjjjku3bt2W2TqwrAlEAAAAViKzZs1KTU1Ns22dO3fO5MmTl9nar7/+ev7yl7+kY8eOOemkk5bZOrA8CEQAAABWEg888ED233//ptBjvfXWy+DBg9OnT58kyVNPPZUDDjggv/jFL5bJ+r/4xS/S0NCQr33ta+ndu/cyWQOWF4EIAADASuI73/lOGhoasuaaa+aBBx7I66+/ngcffDDjxo3Lddddl+7duydJhg8fnunTp7fq2rNmzcqf//znJMlxxx3XqnPDiiAQAQAAWAmMGzcuzz77bJLk6quvzpAhQ5raysvL89WvfjXXX399kqS6ujoPPfRQq65/ww03ZO7cudlqq62W6R4lsLwIRAAAAFYCEydOTJJ06dIlu+66a7N9Pve5z6VLly5J0up7iVx55ZVJksMPP7xV54UVRSACAACwEqiqqkqStG/fPmVlZR/Zv0ePHq229tixY/P444+nXbt2OeSQQ1ptXliRBCIAAAArgX79+qWioiLTp09vulrkfz399NOZPXt2kmSnnXZqtbX/8pe/JEm23377fOpTn2q1eWFFEogAAACsBDp37pyDDz44SXL22Wcv1F5dXZ3jjz8+SXLggQdm7bXXbrW177zzziRp8VYdWBlVrOgCAAAAWDwXXXRRnn/++VxyySX597//naFDh2aVVVbJm2++mZtvvjnTp09P//798/vf/36BcR07dkyS/OAHP8gPfvCDJVpz2rRp+fe//51EIMIni0AEAABgJdGrV688/vjjGTFiRG6++eb84Q9/yMyZM9OpU6dsuOGGOfHEE3PSSSelW7duC4yrra1NktTX1y/xmnfffXcaGxvToUOHDBo0qFWOA9oCgQgAAMBKpGPHjjnhhBNywgknLPaYUqn0sdc79NBDc+ihh37s8dBW2UMEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcCpWdAEAAMDyt+4Zd6zoEoAV7M1z917RJaxQrhABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgML5RAUidXV1Offcc7PpppumsrIya665Zr797W9n5syZK7o0AAAAoA2pWNEFtJba2trss88+uffee5MkZWVlmTx5ci666KLcf//9+de//pWuXbuu4CoBAACAtuATc4XICSeckHvvvTfl5eX5xS9+kdmzZ2fatGk57LDD8txzz+X0009f0SUCAAAAbcQnIhAZM2ZMLr/88iTJ8OHDc+qpp6aqqiq9evXKFVdckf79++cPf/hDnnvuuRVcKQAAANAWfCICkcsuuyyNjY1ZddVVc+qppy7Q1r59+5x44okplUq55ZZbVlCFAAAAQFvyiQhEHnrooSTJ/vvvnw4dOizUvtdeeyVJRo4cuVzrAgAAANqmT0Qg8uqrryZJBg4c2Gz7uuuum65du2bs2LHLsywAAACgjVrpnzJTU1OTOXPmJEk22mijFvutttpqee211zJr1qzFftrMhAkTFtk+fvz4pq8nT568WHO2FfWzpq3oEoAV6KPOb0XgPAgU/VzoPAisTOfBD3/mrq+vb5U5V/pApLa2tunrHj16tNhvftvkyZMXOxDp27fvYtexww47LHZfgBWt7+9XdAUAK55zIVB0K+t5cOrUqVl33XWXep6V/paZdu3aNX3duXPnFvvN31tk7ty5y7wmAAAAoG1b6a8Q6dSpU9PXzW2oOl95+QfZz/zbaxbHh2+JaU5NTU3Gjh2b3r17Z7XVVktFxUr/7aQAJk+e3HRF0xNPPJFPfepTK7gigOXLeRAoOudBVkb19fWZOnVqkmSLLbZolTlX+k/w7dq1S5cuXTJ79uxMnDgxffr0abbfjBkzkiSlUmmx525prg/bcMMNF3s+aGs+9alPLdbfc4BPKudBoOicB1mZtMZtMh+20t8ykyRrr712kuSNN95osc+UKVOSJKussspyqQkAAABouz4RgciAAQOSJE8++WSz7a+99lqmTftgF+354QkAAABQXJ+IQGTo0KFJkptvvjkNDQ0LtY8aNSrJB5fXLOpJNAAAAEAxfCICkS9+8Yvp2rVrxo0bl0suuWSBtpqamvzqV79Kkuyzzz4rojwAAACgjflEBCJVVVX51re+lSQ5+eSTc+GFF2b27Nl56aWXss8+++SVV15JRUVFTjjhhBVcKQAAANAWfCICkST50Y9+lD322CP19fU56aST0rVr12y88ca57777kiTnnntuNtpooxVcJQAAANAWfGICkcrKytxxxx352c9+lp49eza936dPn1xzzTU55ZRTVmB1AAAAQFtSViqVSiu6iNZWW1ubF198MR06dMgmm2ySsrKyFV0SAAAA0IZ8IgMRAAAAgEX5xNwyAwAAALC4BCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAKANmT59embMmJE5c+akvr6+Veasr6/P+++/n2nTpn2s8fPmzcuIESNarR5oCwQisJx873vfy29/+9u88MILy3Xd6urqfPrTn86f/vSnzJ07d7munSQvv/xy7rzzzuW+LsDbb7/d7Pt//vOfs/POO+f4449fqK2mpqbVz9POg8CS+tKXvpSePXumqqoq7du3T1lZ2VK/2rdvny5dumS77bb7WDVddNFF+frXv57+/fvnxRdfbOUjhhWjYkUXAEVQW1ub3/72t6murs6pp56aX/ziF7n77rtz9dVXL/FcRx11VHbdddfF7n/RRRdl9OjRefbZZzNo0KD069dviddcGieffHLuuOOOfPazn83tt9+eTp06Ldf1gbblnnvuyaabbpo+ffos03X+9re/5Wtf+1quu+667LPPPgu0TZs2Lf/6179SVVW10LirrroqJ5xwQk455ZQMHz487du3X+panAeBpTE/zCgrK2u2vbGxMXV1dUmSysrKFuepq6tLY2Pjx6phzJgx+eEPf5gkmTRpUjp27Pix5oG2RiACy8H999+f6urqdOnSJWeeeWaS5K233sq11167xHPtueeei9136tSpOe+885IkZ5555nIPQ0aMGJE77rgjyQcfQNq1a7dc1wfallKplBNPPDHjx4/Peeedl29961tNbdOnT0+SdOzYMZWVlUt9vnj66acze/bsfPWrX83o0aOz6aabNrXN/8Dwvx8cGhoacv7556euri6TJk1qlTDEeRD4OP7xj3+krKwsHTp0SIcOHRbZ98QTT8xvf/vbbLrpphkzZkzKy1u+CaC+vn6Jrxh+9913c+CBB6ampiZrrrlmJk2alP322y+PPvpounTpskRzQVvjlhlYDv72t78lSYYNG5bu3bsn+b8fxPfff/+USqWm15VXXpkkOeeccxZ4f8iQIQuMWxw//OEPM3PmzGy00UY5/fTTW/GIPtro0aPz7W9/O0my5ppr5r///W++/vWvL9cagLblrrvuyksvvZRSqZShQ4cu0HbwwQenV69eqaqqSkVFxSIv+/5wkNKSs846K3vvvXfef//9fOlLX0ptbW1TW0XFB78P+t/A46qrrsqrr76afv365fe///1SH6/zIPBxdenSJaussspHhiEvvvhi0/nqZz/72SLDkOSD89+ShBjV1dXZe++98/LLL2fgwIEZO3ZsDjjggDz33HM55JBD7CfCSk8gAsvYjBkzct111yVJvvGNbzS9/3F/Szj/B/mP8vTTT2fEiBFJkksuuWSJgpSl9dJLL2WfffbJ3Llzc8IJJ2TMmDHZcMMNc9VVVzVdsQIUz/Dhw5MkP//5z9O/f/8F2vr27ZvNN9882223XXbeeecMGTJkgdd6662XJOnTp09+/vOff+RaZWVlueSSS9KzZ8+cdtppC5wD539g+PDl57W1tfnJT36SsrKyXHHFFencufNSHavzILA8nHTSSamvr89nPvOZfPGLX2zVuWfNmpU999wzo0ePztZbb50777wzXbp0yZ///Odss802uf3227P33ntn5syZrbouLE9lpVKptKKLgE+yX/7ylznttNOy1VZb5dlnn216//rrr88hhxySqqqqrLHGGk3vz549O++880569erVdDVJkkycODE1NTW55ZZb8oUvfGGRa9bV1WWHHXZoWm9pw5CHH34422+//WL1ff7557P77rvn7bffzrBhw3L55ZenrKwsY8eOzac//enMnDkzZ5xxRs4+++wW74UFPnn++te/5sADD8xOO+2Uhx9++CN/i/lhU6dOzYABAzJp0qTcc889+exnP7tQn2nTpmXnnXde6P1Zs2ala9euC7w3c+bMvP322+nSpUvWXHPNJB9spjpu3Li0b98+66+//kLznHXWWTnooIMWq17nQWB5uOKKK3LUUUcl+eBq5NYMRN5+++3su+++efLJJ7PVVltl1KhRWW211ZraJ02alD322CPPP/98Ntlkk9x+++3NnjuhzSsBy0x9fX1pnXXWKSUpDRkyZIG266+/vpRkiV+33HLLR677ve9972PN3dxru+22W+zjffTRR0urrrpqKUnp8MMPL9XX1y/Q/uCDD5a6detWSlL64he/WKqurl7suYGVV01NTalfv36lzp07l15++eWm92fPnl36/Oc/X3r66adbHDt37tzSLrvsUkpSOuecc1rs995777Xaea+51/XXX79Yx+o8CCwPb731Vqlr165N56iRI0e22txPPfVUqU+fPqUkpV133bU0c+bMZvtNnz69tPPOO5eSlLp161a66KKLFjrnQVvnlhlYhq655pqMGzeu2bbS/39x1pLuIfJRbr755px77rlJkl//+tcLzLG4r8mTJzftHn7iiScu1rpXX311dt1110ybNi2nnHJKrrrqqoVuCxo8eHAeeuihrLnmmrnllluy9dZb5+67716s+YGV1/Dhw/PKK6/kl7/85QKbO5911lkZOXJkdt5552bPlTU1NfnCF76QBx54IEcddVTOOOOMFtf48JNbZsyY8bHOfc29lmT/JudBYHmYN29evvKVr2TWrFkLtdXV1eXAAw/MY489tsTzNjY25vzzz89OO+2UCRMm5KCDDsrIkSMXuspuvh49emTUqFE57LDDMnPmzJx44onZbrvt8uijjy7x2rDCLMu0BYqstra2tP766zcl9/97hci1115bSlLaf//9F3j/yiuvbPY3oUOGDCklKf31r39tcc277rqrVFlZWUpS+sY3vtFsn1mzZpVeeeWV0iuvvFKqq6trts8ZZ5xRSlLq3bt3qba2dpHH+d5775WOPPLIUpJSWVlZ6fzzz19k/1KpVBo3blxpwIABTd+bAw44oDRu3LiPHAesfO66665SeXl56fOf//wC7z/66KOldu3alZKU/vSnPy00bsaMGaXddtttgavVxowZ0+I68+bNa+o7Y8aMVqt//rn3pptuarGP8yCwPB199NGlJKU+ffqUunfvvsAVIt///vdLSUpVVVWle+65Z7Hn/Ne//lX69Kc/XUpSateuXenMM88szZw5s1RXV1dqbGxsdkxDQ0Optra2NGPGjNLll19e6tWrV9M5bfDgwaWbbrqpxZ81oa1whQgsIxdddFFef/31Fh/b+HF35W5p3NVXX5399tsvtbW12XPPPXPxxRc32+/vf/97+vXrl379+mXq1KkLtc+aNatpt/Jjjz22xd3NS6VSrrnmmmy++ea56qqr0qtXr1xzzTU59thjF3lsDQ0NWX311XP77bfn9NNPT0VFRf76179mww03zCGHHPKxfqMBtE0PPPBADjjggDQ2NmbVVVfNcccdl8MOOyz77rtvvvjFL6ahoSGHH354jjzyyAXGvfrqqxk4cGDuu+++7LfffvnJT36Sp556KgMGDMhZZ52Vurq6hdaqrq5e4M/PP//8Ip9U81GvSy+9dIH55syZs9CazoPA8vazn/0sf/zjH1NZWZm//vWvqaqqWqD91FNPzYABA1JdXZ199tknt9xyS4tzlUqljBo1Kvvtt18GDRqUxx9/PGussUbuu+++1NbWplu3bmnfvn3Ky8ubPU+2a9culZWV6dGjRyZNmpTnnnsuBx54YJLkoYceykEHHZT+/fs3PVYd2qQVHMjAJ9Kbb75ZWmWVVUpJSqecckqzV4iMGDHiY93HfvXVVze75u9///tSZWVlaciQIaU5c+a0WNvNN9/cNNf06dMXap84cWLptNNOK6233nqlKVOmLNQ+d+7c0p/+9KfSVltt1TTPjjvuuNBvOxfn9fDDD5eeeOKJ0rbbbrvA+1/4wheW7BsOtEn//e9/S2VlZS2eAzbccMPS7Nmzm/o3NDSUfve735WqqqpKSUpHH310028Xb7311qbz6lZbbVV66qmnFljrvffeKx111FGlo446qjRnzpzSa6+9VkpSqqioKPXv33+xX/Pvyb/yyitLpdIHV+39+Mc/Lv373/9uWst5EFgRzj777KZzxBVXXFEqlUqltdZaa6E9RKZNm1bafPPNm86BLe2BNH369NKuu+7aNOchhxxSeuedd0qlUql03nnnlbbZZpvSTjvtVBo8eHBpyJAhC7123nnn0sCBA0tbbrll6ZJLLmma94knnijtvvvuC9QJbZVABJaB+Zd577PPPqV///vfzQYiV111VWmDDTZY6LX66quXkpR69erVbPsNN9zQ4rp33333Ah8umnP77bc3/cM3d+7cJT62MWPGlPr27VtKUqqsrCydddZZpXnz5pVKpVLpwAMPLG233XYt/uM5ePDg0qBBg0o77rhjabPNNis9+eSTpVKpVGpsbCzdeOONpf79+5c6duxYeuGFF5a4LqBt+tWvflW67rrrSk8++WRp3LhxTaFshw4dmkKNmpqa0tVXX13adNNNS0lK7du3L/32t79daK7//Oc/pbXXXrvph/wzzjijxfPY5MmTS0lK66yzzhLVO//Wl0Vtouo8CCxPDQ0NpZNPPrnp57df/vKXTW3NBSKl0gfnwA022KCUpFReXt7iL9Tef//90t57792qm7LO98QTT7T6nNDaBCKwDLz88sulzTbbrDR58uQWA5GWtLSHyMfx9NNPLxSQjBo1qukf1P+9r7OhoWGx5n3uuedKn//850svvfTSUtf4YfX19Yt82gSwcpsxY0bTD+/zA4/Zs2cvsN9Sv379FvlD9OTJk0tbb711KUmpU6dOpf/+97/N9ps4ceJSBSKLCp9LJedBYPmYNWtW6Qtf+ELTOXL48OELtLcUiJRKpdLrr79eWnPNNZv2BbnxxhuXV9mw0rCHCCwD/fr1y9NPP5011lhjhdVQU1OTgw8+OLvssktee+21j+z/1FNPZcstt8ybb775kX0322yz3Hnnndloo41aodL/065du2yzzTatOifQdhx99NGZOHFiDj744HzrW99Kkqyyyiq58MILU1ZWlm9961t59tlns/3227c4xxprrJEHH3wwgwYNymWXXZYtttii2X5z585NkowbN26J9g656qqrFhjfEudBYFkbM2ZMdtxxx9x6660pLy/Pb3/72/zwhz9c7PHrrbde7rnnnnTv3j0NDQ059NBDc+utty7Ur66uLlOmTMn06dMze/bs1NTUpLGxcYlqbWxsTG1tbWbPnp3p06dnypQpmTdv3hLNAStCxYouAD6pWtqM9MUXX8ymm276keO/973v5Xvf+16L7a+//nrWW2+9FtvPPvvsvPrqq0k+eBTv6aef3mLf2tra7Lfffpk0aVL222+/PProo1lllVUWWd/777+fOXPmpH379unQoUPat2+f9u3bp6ys7COO7P80NDRk3rx5qaurS11dXebNm5dPfepTiz0eWHn88pe/zF//+tdssskmufzyyxdo22efffLEE09k3XXXTWNjY+rq6prdkLpUKmXOnDmZN29e/vrXv6Z3794trtfY2Jj+/fs32zZz5sy8/fbb6dKlS9Zcc81m+3z4Mb4tcR4EloU5c+bkggsuyM9+9rPMmzcvnTt3znXXXZf9999/iefabLPNcuutt2bPPfdMbW1tvvzlL+euu+7Krrvu2tTnqaeeysCBA1vzEJIk//znP7PLLru0+rzQmgQisJzN/yG7oqIi66yzzkLts2fPzjvvvJNevXqle/fuC7W/+eabaWhoWGRg8fjjj+fcc89Nknz1q19dZBiSJJWVlfnzn/+cz33ucxkzZkwOO+yw3HLLLYv8of7iiy9eZGDzcZVKpVafE1ixLr/88px++unp2rVrbrnllqbz16xZs/LMM89kww03zJNPPrnIK0P+15FHHpk//elPLbb369cvY8eObbbtj3/8Y4455pjsscceufnmm5foWD7MeRBYFp5++umcd955mTdvXjbZZJPceOONLV4NtziGDBmSK664Ioceemh22GGHDBgwYIH2Tp06ZfPNN0/Hjh3TsWPHtGvXLuXl5Skv/7+bCZ566qlsvPHGCz3VZr6GhoY0NjamsbExNTU1qampabEvtCUCEVjO5l85stZaazVdwfFhf/rTnzJs2LB897vfzRlnnJHkg8dJzv9HZY011siUKVNavAJl+vTp+fKXv5y6urpsscUW+eMf/7hYde2222751a9+lRNPPDG33XZbvv/97+fss89usf+qq66aLbfcMh07dkxlZWXKy8vTrl27phClsbExjz32WAYNGtTiHA0NDU2vmpqa1NbWLlatwMrj2GOPbXqE7aBBg/K73/0uL7/8cl588cW89dZbST4IcTt06JCePXs2nVM6dOiQ999/PxMnTkynTp2y9tprJ/ng0u7a2tp07tx5hR3TfM6DwLKw8847Z8SIEbnnnnty8cUXt0qwcMghh6ShoSEHHHDAQufPrbbaKmPGjGlx7F//+tccfPDBmTNnTkaMGJHNN998qeuBNmMF72ECn3j/u6nqlClTFrnR34c3Va2rqyvtv//+pf79+zdtgNq7d+9SkmafJlNfX1/63Oc+V0pS6t69e+mVV15ZqM+iNlUtlUqlI444oqn92muv/djHfeKJJ5aSlA488MDSu++++7HnAVZu++6770KPmi0vLy/17du3tMsuu5S++c1vliZPntzs2FtuuWWJNqUulUqlG2644WM90ryl18477/yxj915EFjWFrWpamu48cYbS+3bty8lKe21115Nj+UtlT54tPp3v/vdZn+ehJWFK0RgOVvce8snTJiQv/3tb3nhhRfyyiuv5PLLL883vvGNRY457rjjctddd6W8vDzXXnttNtxwwyWu7/e//32eeuqpPP/88znqqKOy4YYbZocddljs8aVSKSeffHIuuuiilJWVZYMNNkiXLl2a2v/yl79kxowZH3kswCfD0UcfnYqKigwYMCBbbLFF+vXrl/XXXz+VlZXLZL35t+NUVlZm3XXXbbbP4uwhMr/Px7kSxXkQ+CS48MILc/LJJ6e8vDznnntuTjvttKafY2tqavLFL34xr732WsaMGZObb775I/efgzZpRScy8En3v1eITJ06tekKkcbGxtKRRx5Z+uxnP1vaZpttSuuuu26pqqqq2d9SrrnmmqU5c+a0eIXId77znaa+559/fov1fNQVIqVSqfTiiy821fGpT32qNGHChMU61tra2tIhhxxSSlJaddVVF/ptxXPPPdf0W4bvf//7izUnUFwf5wqRu+++u5SktNVWW7XYZ8SIEaUkpQMOOKDFPvOv1ttvv/2WoGLnQWD5mv9Y3da8QqSmpqZ0zDHHlJKU1lprrdLDDz/cbL+33nqrtO2225aSlLbddtsWr/aDtsxjd2E5K31os7yysrK0b98+999/f5555plMmDAhffv2zRe/+MWceeaZ+fOf/5zRo0fnoIMOypQpU3LPPfc0O+f3vve9/PrXv06SfPOb38wpp5yyVDVuvPHGufjii5MkkydPzn777feR97VPmjQpu+yyS6677roMGjQozzzzTD73uc8t0GezzTbLqFGjsuqqq+bnP/95jjzyyNTX1y9VrcDK57333sujjz6aP/7xjznllFNy7bXXttrcH94EsDUsyRNjnAeB5a2hoWGB/11ajz32WLbbbruMGDEiu+++e5555pnsvPPOzfbt27dvHnjggQwZMiRPP/10dt5557z++uutUgcsL26ZgWXsf5/j/r9/Pu200zJ48OBsvfXW6d+/f7Obpf7kJz/Jueeem/XXX7/ZS6xPPvnk3HPPPenTp09TkNGSmpqaJB/8kN+uXbsW+33ta1/LqFGjcuutt+aUU05p8fL2UqmUq6++Ot/5zncyffr0nHzyyTnvvPNSUdH86WXIkCF56KGHsvvuu+fPf/5zpk2blptvvnmxHnEJrFwmTJiQhx9+OG+99VbefPPNvPrqq3nhhRcyadKkBfodf/zxOfTQQ1tlzdb6UPD+++8nWbxAxHkQWFHmB6pLG6zW1dVl7733zqhRo5IknTt3Ts+ePfP1r389NTU1mTt3btNrzpw5qa6uzvvvv5/q6uqmX/a99tpr2XnnnXPfffdlk002WboDg+VEIALL2PwAZP4P6f/7D1a/fv3Sr1+/Rc6xySabpK6uLk899VRmzpy5UPtqq62W2267Lb169VpkyNHQ0JDbbrutacxH/aB/6aWX5jvf+U622267ZttfeOGFHHTQQXnhhReSJGuvvXYmTpyYAw44YIF/POfMmbPAP55z585tmuPOO+/MHnvskTvvvHOBe+yBld+8efNy2GGHLRAEl5WVpX///hkwYEC222679O/fPxtssEHmzJmTysrKRZ7D5quvr286v/zvee/jfiiora3Nddddl06dOmXatGn5xS9+kSRZffXVFznOeRBYkeb/omv+/35c7du3X+BcPWfOnPzlL39ZoE9lZWW6deuWbt26Za211kq3bt3SpUuXdOnSJausskr+/ve/Z9KkSRkyZEj++c9/ZrPNNluqmmB5EIjAMva/Qci8efOWeI5XXnklm266adNc82+1+bA+ffo0O7ZUKmXw4MF59dVXM2PGjKZbX/bYY4+PXLdLly4thiFJsu6662b8+PFNf37rrbeaHqM5X1VVVbp27Zpu3bpl9dVXX+Afzw4dOuRPf/pTHnnkkQwdOjSjRo3yYQA+QdZff/2mW/6GDBmSgQMHZscdd0z37t2b+jzwwAPZeOONFznPgw8+2GKA+8orryywgXR1dfVH1jX/fPzhH/4rKyszYsSIPPbYY03vdenSJccee+wi53IeBFak1gpEkuTEE0/MOuusk4022ijrrLNOevfund69e6dHjx7p2bPnR26G/a1vfSs77rhjNt988xZ/LoW2RiACy9j8AKKuri7JB4n7ktpoo42yzz77NF3dMXjw4MV+QkNZWVkOPPDAnHTSSU3v7bLLLvnlL3+5xHX8r86dO+eMM87I22+/nQ022CB9+/ZN7969s9pqq6VHjx7p0aNHi5eMz7fTTjtl2LBh2Xnnne1ODp9AN9xwwyLbO3funE033TRVVVXp0KHDR54zkg/Op/OvvPjf2wwHDhyYW265Jd26dWtx/PwPDv+7N9IhhxySdu3aZd11181nPvOZfOELX/jIK0ScB4EVqTX3INpvv/2y3377fezxm222We66667ssMMOzd4CDm1RWenDOzwCre6OO+7IPvvsk0022aTpkuqP45JLLsn111+fr3zlKxk2bNgSPQpy3LhxOeuss7L11ltn6NCh6d+//8euY1m4//7789nPfnZFlwEUxAUXXJDvfve7GTx4cB588MEVXU4S50EAWBEEIgAAAEDheOwuAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAsJy8//77efPNN/Pmm2+moaFhRZezRKZOnZpvfvObmTt37gLvP/3009l4442X+PWXv/xlBR3JymHevHkZMWJE6uvrl9kac+bMafb9MWPGZMSIEcts3bFjx+YnP/nJMpsfABZXxYouAACK4pZbbskRRxyRJHn77bfTu3fvjzXPXnvtlZdffrk1S2sycuTI9OvXb4H3ZsyYkS233DJvv/12unXrlvPOO6+prVQq5aWXXlridWpqahar39ChQzN+/Pglnn++G264IVtvvfUi+8yaNStVVVVp167dx17nw0qlUmpqatKpU6ePPcdFF12UU089Neeee25uv/32bLLJJq1S23z//Oc/M2zYsJx55pn52te+lg4dOiRJHn300QwaNCgVFRX53Oc+l759+7bquk888USGDBmSmpqaDBw4MHvuuWerzg8AS0IgAgDLSVVVVdPXHTt2/NjzzJ49O6+99lprlLSQrl27LvRejx49cvjhh+eXv/xlfvWrX+Xwww/P5ptvniSprKxMkvTq1SvTpk1rGvPHP/4xxxxzTL797W/nN7/5TdP7u+yySx588MGmD+AfZfLkyR8rcJmvrKzsI/t069YtSdKuXbu0a9dusca0pLGxMXV1dVlrrbUyYcKEjzXHmDFj8sMf/jBJMmnSpKX6u9KS3/72txk3blwuuOCC/L//9/+a3t9pp53y6U9/Oo8//nh++tOf5o9//GOrrjtgwIBsscUW+fe//51vfvObee655xb47wIAlie3zADAcvLhEGBpPuT26NEjSfL9738/pVJpqV8vvvhi09yrrLJKs2v+9Kc/TZ8+fVJfX58TTjih6f2Pe1VFRcXi/U5mfuBy5ZVXLvbx1NXVLTT+o2rp0qVLevbsmZ49e2bVVVdt9lVbW9v0aq5f165d07lz53Ts2PFjf1/efffdHHjggampqcmaa66Zmpqa7Lfffpk9e/bHmq85zz33XG677bYkyc9//vOF/r/42c9+luSD7/ljjz3WausmH/x9ufTSS1NeXp4333wzp59+eqvODwBLQiACAMvJhz94Ls4H9ZYsTpjS2Ni4yPZSqdTs+y1dudGpU6f86Ec/SpI8/PDDGTNmTJJlH4gs7W0si7NOXV1dZs2alXfeeSeTJ0/OhAkTFnodeeSRTf1POOGETJo0aaE+77zzTt57773MnTs348aNW+Jaq6urs/fee+fll1/OwIEDM3bs2BxwwAF57rnncsghh7TafiJnnnlmGhsbs8022+SAAw5YqH233XbLXnvtlcbGxgwbNizV1dWtsu582267bdNVKZdccknuv//+Vp0fABaXQAQAVjKLc7vJ97///eyyyy75wx/+kHnz5i3Ufuyxx+a0007L9OnTF3h/UbeLHHnkkdl1113z1FNPZYsttkiSlJd/8KPEu+++m7KysqbXMccckyS58MILF3j/wQcfXOzj/PD8w4YNW2CeRb3at2+/RGt8lHPPPTdnn312kmS//fbLhRde2KrzJx/sY7Lnnntm9OjR2XrrrXPnnXemS5cu+fOf/5xtttkmt99+e/bee+/MnDlzqda555578o9//CPJB1eCtPT/94UXXphOnTrlpZdeyte//vWlWrM5P/3pT9OpU6eUSqV87Wtfy3vvvdfqawDAR7GHCACsxMaMGZPf/OY32WKLLXLSSSc1vf/EE080hQ/f+MY3Fhr3wAMP5KWXXsqkSZPygx/8YLHW6tChw0K/zZ9/JUq7du2y4YYbNr0/c+bMvP322+nRo0dWX331pvffeuuthZ5Usyjz51999dXTpUuXxR43f4+Vlq6EWRz19fX57ne/u0AAsskmmzSFCFOnTk2vXr2aQpuP6+23386+++6bJ598MltttVXuueeedO/ePUnSuXPn3H777dljjz1yzz33ZODAgbn99tuz/vrrL/E6c+bMyTe/+c0kyZAhQ7LXXnu12HfDDTfM8OHDc+qpp+a6667Leuut13QrTWtYc801841vfCMjRozIN7/5zXTu3LnV5gaAxeUKEQBYid1333254oorctZZZzVdPVBfX58nnngiyQe3R0yePDm/+MUvmsa88847TRuVnnjiiUu1/vzAonv37hk7dmzT66yzzkqSHHHEEQu8v8MOOyzR/PMfT3zeeefl1VdfXazX2LFjFxq/pCZMmJDdd999kVeDHHnkkdl8883z17/+9WMHL08//XS23377PPnkk9l1113z0EMPZbXVVlugz5prrpmHH344O++8c1588cVsu+22+e1vf7vEx/ad73wnb7zxRiorK/O73/3uI/ufcsopTaHJz3/+86Y9a1rLmWeembFjx+bMM89c7E12AaA1CUQAYAWoqalp9jVnzpy89957mTJlSt56663MmTNnkfN8+9vfzuDBgzN9+vSm0GP06NF5//3307dv36y//vpZf/31c/rpp+fuu+9O8sEjV5Okf//+iwwoZs+enerq6kV+CP6ovUqWdtzHDTQ+7vhSqZQrr7wym2++edMVNp/5zGey5pprLtDvvvvuy8iRI/Piiy/mwAMPzLbbbpu///3vi71OY2Njzj///Oy0006ZMGFCDjrooIwcObLZp/wkH2ykO2rUqBx22GGZOXNmTjzxxGy33XZ59NFHF2u9m2++OZdddlmSZPjw4dlss80+ckxZWVmuv/76bL/99kmSs88+O1/5ylc+1m07w4cPz9Zbb52ddtqp6b3VVlstffr0abZ/qVRa6HYuAGhtAhEAWAE6derU7Kuqqio9evTIGmuskXXWWecjN5wsKyvLZZddlvbt2+dXv/pVxo0bl/vuuy9JcuCBB2bDDTds2hD0xz/+cZI0zXnwwQcvcu5jjjkmq6yySsrLy9OxY8em15133tnU5+Nu9Lm442pqapIkp59+ejbccMPFem288cYLjV8czz77bAYPHpz/9//+X2bOnJmysrKceOKJuffee9OpU6cF+g4ePDgXX3xx1lhjjaax+++/f3bcccem739LHn300QwaNCinnnpq6uvrc+aZZ+aPf/xj2rVr12L41NjYmPLy8vz2t7/N5Zdfnl69euXZZ5/NoEGDMmTIkNx8880tfk+feuqppr8Du+22W7773e8u9veka9euufvuu5uCjL/85S/ZaqutMmrUqGb7T5kyJXvttVd+9KMfZfTo0U3vT5s2Lf/5z38W63HR48aNy9ChQ/P5z39+qQMxAFgUgQgArOT69++fE088MTU1NTn11FObrgT58pe/nCQ555xzsuqqq2b06NH5+9//3vRh9qCDDlrsNerr65seOfvhJ7fMDxyWdFPV5jZ6bc78+d9555289tpri/363/GL8sILL+SQQw7Jtttum0ceeSRJsvHGG+f+++/PhRde2OztHO3bt8/xxx+fV199NT/72c/SrVu3JB/s3bL77rtn7733ziuvvNLUv1QqZdSoUdlvv/0yaNCgPP7441ljjTVy3333pba2Nt26dUv79u1TXl7e7Eax7dq1S2VlZXr06JFJkyblueeey4EHHpgkeeihh3LQQQelf//+C11V8dJLL2XffffNnDlzstZaa+Xss8/OjBkzMnv27MyZM6fFK5U+/OrUqVNuv/32fOELX0jyQWCxxx57ZP/9919oM9QXXnghI0eOzFlnnZVnn3226f35T0ZanFtjHnvssdx333154okncu65535kfwD4uGyqCgArQF1dXbPv19fXZ968eamtrc28efPSs2fPxZrvRz/6Ua666qrcdNNNKS8vz/rrr58dd9wxyQe3W/zwhz/Mt7/97Rx77LGZNGlSNtlkk6YnxbRkxIgRGTFiRDp16pSKiorssssuefDBBxf4UFteXp4NNthgobGzZs3K1KlT061bt6y66qoLtS/uk2DefPPNxer3cdxyyy0ZMWJE7rrrrqYrM+Z/r771rW8tVo1VVVX5/ve/n29+85tNV3o0NjbmzjvvzL333pu///3v2XPPPfPee+/lnHPOabpd6ZBDDslvfvObrLbaahk9enS22Wabpu9zc09+aWhoSENDQ6qrq9OrV6+sscYauemmm/Lvf/87Z555Zu6999784Ac/WODvy/PPP5/dd989b7/9djp27Ji//e1vTX8nPo5HHnkk22yzTX7605+msbExq6++etPmr/PN35smSXbdddemr+c/PnlxHqP8la98JXfccUeuueaaDB8+PPvss0+22mqrj103ALSoBAAsFyNHjiwlKS3tP7+HHnpoKUnp+9///gLvX3jhhU3zn3nmmQu01dbWltZee+2m9uHDhze1vfjii03v19XVtbjukCFDSklKjz766EfWOGLEiFKS0re//e0lOrZp06aV3nvvvVJtbW2poaFhica2pK6urjRnzpzStGnTSnPmzGl6/6qrrmo67k6dOpW++93vlqZPn97sHBtssEEpSen0009f5FpPPvlkaZtttiklKa255pql2bNnN7W9//77pb333rs0cuTIVjmuD3viiScWeu/WW28t9ejRo1RRUVG67bbbSqVSqel4P85r4sSJpVKpVLrnnntKO+200wLfy/mOPfbYUpJSz549F3j/+9//filJaZ111lms43n33XdLvXv3LiUpbbnllqXa2tol/I4AwEdzywwAfEIcccQRTb+BX2+99RZo69ChQ0499dSmP8+/3eLjmH/lxLvvvpvq6urMmzcvDQ0Ni/UEksbGxtTV1WXu3LmZOXNmqqurF2jfc889071791RWVqZdu3bN3j6ypK//r737j4m6/uMA/uQODuRA5ERvJIRFhg6WBgRYOJ1RmgSKTfQqVqMmElnmJO2HoWImcI5wTCB/tPyRxo9NiJUtEJsjo0mUyCQnbFacoogQ3A844L5/sPuMkzu446jv7J6PjXnc532f9+c++M897/1+vVxcXODu7g4fHx989dVXJvdr7dq12Lx5M1pbW5GTkwNvb+8J3xcACAsLE7Z65Ofnw8PDQzgmlUpRWVmJ5cuX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",
      "text/plain": [
       "<Figure size 1280x960 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytools.show_bar(df,'上网课是否会分心')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>上网课是否会分心</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不会</th>\n",
       "      <td>7.5</td>\n",
       "      <td>19.51</td>\n",
       "      <td>1.85</td>\n",
       "      <td>27.78</td>\n",
       "      <td>8.70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>偶尔会</th>\n",
       "      <td>62.5</td>\n",
       "      <td>60.98</td>\n",
       "      <td>65.74</td>\n",
       "      <td>61.11</td>\n",
       "      <td>63.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>经常会</th>\n",
       "      <td>30.0</td>\n",
       "      <td>19.51</td>\n",
       "      <td>32.41</td>\n",
       "      <td>11.11</td>\n",
       "      <td>27.54</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级          大一     大三     大二     大四     合计\n",
       "上网课是否会分心                                  \n",
       "不会         7.5  19.51   1.85  27.78   8.70\n",
       "偶尔会       62.5  60.98  65.74  61.11  63.77\n",
       "经常会       30.0  19.51  32.41  11.11  27.54"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['上网课是否会分心'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从上面的柱状图我们可以看出，大学生上网课“偶尔分心”的占比远远高于其它两者，其中，大一至大四上网课“偶尔会分心”的比例相当，\n",
    "\n",
    "但大一和大二的“经常会分心”的比例比其他年级的比例较高，而大三和大四的“不会分心”的比例较高，其中大四的比例最高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>课堂教学和网络教学偏好</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>课堂教学</td>\n",
       "      <td>178</td>\n",
       "      <td>85.99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>一样</td>\n",
       "      <td>26</td>\n",
       "      <td>12.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>网络教学</td>\n",
       "      <td>3</td>\n",
       "      <td>1.45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  课堂教学和网络教学偏好   个数    百分比\n",
       "0        课堂教学  178  85.99\n",
       "1          一样   26  12.56\n",
       "2        网络教学    3   1.45\n",
       "3          总和  207  100.0"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = pd.DataFrame()\n",
    "b['课堂教学和网络教学偏好'] = df['课堂教学和网络教学偏好'].value_counts().index\n",
    "b['个数'] = df['课堂教学和网络教学偏好'].value_counts().values\n",
    "b['百分比'] = df['课堂教学和网络教学偏好'].value_counts(normalize=True).values * 100\n",
    "b['百分比'] = b['百分比'].apply(lambda x: round(x, 2))\n",
    "total_row = pd.Series({'课堂教学和网络教学偏好':'总和','个数':b['个数'].sum(),'百分比':b['百分比'].sum()}).to_frame().T\n",
    "pd.concat([b,total_row],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEQAAANoCAYAAADJTD/gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAB7CAAAewgFu0HU+AACMPUlEQVR4nOzdeZxe0+E/8M9MZrJNZBERJLZKLN8WrZTWUpRSa1G1BqWlqkqp2qq26M/SCqqqIY0tRXyr1NKiqS2N2otSjVqSiIiIJCKyz8z9/eGV52tkspFl4r7fr9fz6uSec885d0yfufN5zj2nqiiKIgAAAAAlUr28BwAAAACwrAlEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASmeZBSLHHHNMqqqqMmrUqAXWGz9+fI455pisueaaadOmTTbccMNcdtllaWxsXOB5//znP7PPPvuka9euadeuXbbaaqvcc889S/AKAAAAgE+LqqIoiqXdyUUXXZTTTjstSTJy5Miss846zdYbPXp0ttlmm7zxxhsfDK6qKnOHd9hhh+X6669v9rx77rkne+21V+bMmdPkvKqqqgwcODDf/e53l/AVAQAAACuypT5D5JJLLsnpp5++0Hpz5szJbrvtljfeeCNdu3bNn/70p8yZMycjRozI5z//+dxwww255ZZb5jnvlVdeybe+9a3MmTMnX/jCF/Lss8+mvr4+9913Xzp37pzjjz8+I0eOXBqXBgAAAKygllogMn369Bx00EE56aST0rNnz4XWv/rqq/Piiy+mqqoqt99+e/baa6+0atUqG2ywQf74xz+mpqYmJ5xwQhoaGpqcd/rpp2f69Onp3r17hg4dmk033TTV1dXZeeed86tf/SrTp0/PqaeeurQuEwAAAFgBLbVA5JxzzsmQIUPypS99KU888cRC6w8YMCBJsscee+QrX/lKk7LPfOYz2WefffLWW2/lH//4R+X422+/ndtuuy1Jcsopp6Rr165NzjvooIOyxhpr5M9//nNmzpz5SS8JAAAA+JRYaoFIdXV1zjvvvAwfPjyrrbbaAutOnjw5L7zwQpJk//33b7bObrvtliRNFkp95JFHKout7rfffvOcU1NTk5122inTp0/PsGHDPtZ1AAAAAJ8+NUur4fPOOy+1tbWLVPeVV16pfL3llls2W2eTTTZJkowYMWKe83r27Jk111xzoeftvPPOizSeueYu7jo/M2fOzIgRI9K9e/d069YtNTVL7dsJAAAApVVfX58JEyYkSTbeeOO0bdv2E7e51P6CX9QwJEkmTpxYOWd+O9CsuuqqSdJk2965562//vrzbbu58xbV/EIWAAAAYPl44oknsvnmm3/idpb6LjOLYtasWUmSjh07plWrVs3W6dKlS5Jk3Lhx85w3t2xRzwMAAADKrUU84zE3BGnfvv1867Ru3TpJMmPGjE983qIaM2bMQsu32mqrJB8kVKuvvvpi9wEAAAAs2Lhx47LFFlskSbp167ZE2mwRgUi7du2S/F940Zzq6g8ms0yfPv0Tn7eoFmW74LlWX331xaoPAAAALL4ltX5ni3hkZu5jLW+++eZ860yePDlJUhTFPOeNHTt2sc4DAAAAyq1FBCJrrbVWkg8ea3nrrbearTN+/PgkSYcOHeY5b+TIkfNtu7nzAAAAgHJrEYHIKqusUgk3nnrqqWbrPPbYY0n+LwRJkj59+iRJXn311bz77ruLfB4AAABQbi0iEEmSnXbaKUkyZMiQZsuHDh2aJNlss80qx9Zdd92st956qa+vz6233jrPOQ0NDXnggQfmOQ8AAAAotxYTiBx++OFJkltuuSX//Oc/m5SNGDEit99+e5Jkjz32aPa8n//855k6dWqTsuuvvz5vvvlmampq8vWvf33pDBwAAABY4bSYQGSbbbbJ1ltvnfr6+uy+++75y1/+klmzZuXBBx/MrrvumtmzZ2e99dbLN77xjSbnHX300encuXNGjx6dnXfeOf/6178ybdq0DBo0KMcee2yS5OCDD85qq622PC4LAAAAaIFaxLa7c914443Zdttt8/rrr2f33XdvUta2bdtcf/31qa2tbXK8W7duuemmm/LNb34zjz32WDbddNMm5euuu24uvvjipT52AAAAYMWxzGaIFEWRoiiyzjrrzLfO2muvnaeeeiqHH354WrduXTm+xRZbZNiwYdl6662bPW/XXXfNY489lu23375yrLq6Ovvtt18effTRdOvWbUldBgAAAPApUFUURbG8B9GcKVOm5OWXX063bt2y9tprL/J5b775ZsaOHZvPfOYz6dq161IcYfLGG29kzTXXTJKMGTMmPXv2XKr9AQAAQBktjb+/W9QjMx/WqVOnfPGLX1zs89ZYY42sscYaS2FEAAAAwKdFi1lUFQAAAGBZEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCLRQ999/f3bbbbd069YtrVu3Ts+ePbP99tvnmmuuSUNDw0LPnzVrVj73uc+lqqoqffv2XSpjfPXVV3PooYeme/fuadu2bT7/+c9n8ODBS6UvAACAJalmeQ8AmNdvf/vbHHvssSmKIklSXV2dsWPHZuzYsXn44YczZMiQ3HHHHWnXrt182zjjjDPy73//O6uvvnquuOKKJT7GZ555Jttvv33ee++9JElVVVWee+65HHbYYXnllVdy7rnnLvE+AQAAlhQzRKCFeemll3L88centrY2AwcOzKRJkzJnzpy8/vrrufDCC1NTU5OhQ4emf//+821j2LBhufTSS5Mkv/vd79KlS5clOsbJkydn1113zXvvvZd11103Dz/8cOrr6/PEE09k7bXXzs9//vM8+uijS7RPAACAJUkgAi3MkCFDUl9fn6OPPjpHHnlkunTpkurq6qy55po59dRTc9xxxyVJ7rrrrmbPnzp1ag4//PA0Njbmu9/9bnbbbbclPsbzzz8/48ePT7t27XLfffdl2223TXV1dTbffPMMHjw4jY2N+dGPfrTE+wUAAFhSBCLQwowdOzZJ0rt372bL11prrSTJjBkzmi0/8cQTM3LkyKy99tq55JJLlvj46uvr87vf/S5JcuSRR84zzq985SvZfPPN8+STT+b1119f4v0DAAAsCQIRaGF69OiRJPnLX/7SbPndd9+dJOnTp0+zZYMGDUpVVVWuueaadOzYcYmP7/nnn8+7776bJNl///2brTN3Vsq99967xPsHAABYEgQi0ML07ds3dXV1uffee3PMMcfk5ZdfzowZMzJixIgcccQRuf/++9OuXbv8+Mc/bnLepEmTctRRRyVJvvjFL+bxxx/P8ccfn9NPPz333HNPGhsbl8j4XnnllSRJq1atsvnmmzdbZ5NNNkmSjBgxYon0CQAAsKTZZQZamF69euWee+7Jt7/97QwYMCADBgxoUr7RRhtl0KBB2XjjjZscP+200/LWW28lSf7zn/+krq4uNTU1efrpp3PhhRdmiy22yM0335zPfOYzn2h8EydOTJKsvfbaadOmTbN1Vl111STJqFGjPlFfAAAAS4sZItACvffee5k5c2azZe3bt8+4ceOaHHvuuecq63rsvffeGTt2bB588MEMHTo048aNy1lnnZUnnngiX/nKVyqhycc1a9asJFngzjVzyz46TgAAgJZCIAItzEMPPZS99tqrEiasu+662XbbbdOzZ88kydNPP5199903v/jFLyrn9O/fP0VRpGvXrhk8eHCTtUPatGmTc889N/vss0/efPPNXHzxxZ9ofK1atUryQTAzP61bt04y/4VfAQAAljeBCLQwJ554YhoaGrLGGmvkoYceymuvvZaHH344o0ePzk033ZTOnTsnSfr165dJkyYlSR544IEkH6w/0qFDh2bb/eY3v5kkufPOOz/R+Nq1a5fk/0KP5lRXf/DWMn369E/UFwAAwNIiEIEWZPTo0Xn22WeTJIMHD852221XKauurs5BBx2Um2++OUkybdq0DBs2LEkyYcKEJMmXvvSl+bbdvXv3JPnEW+HOfRxm7vbAzZk8eXKSpCiKT9QXAADA0iIQgRZkbsiw0kor5atf/WqzdXbZZZestNJKSf5vjY65j8jMnT3SnKlTpyZJ6urqPtEY11prrSQfLJg6v8Bj/PjxSTLf2SoAAADLm0AEWpC5YUVtbW2qqqoWWn/ubI3PfvazSRa8ze1jjz2W5INdaj6Jz372s2nTpk1mzpyZf//73wvsa254AgAA0NIIRKAF6d27d2pqajJp0qT5PpLyz3/+szLbY6uttkqS7L777kmSyy+/PNOmTZvnnLFjx2bQoEFJkj333PMTjbFdu3bZZpttkiRDhgxpts7QoUOTJJttttkn6gsAAGBpEYhAC9K+ffvsv//+SZLzzz9/nvJp06bl2GOPTZJ861vfqszAOOaYY7LGGmtk9OjR2WWXXfL444+nsbExM2fOzB133JGvfOUrmTRpUrp165ZjjjnmE4/z8MMPT5JcccUVeeONN5qUPfDAA3n88ceTJHvssccn7gsAAGBpqCqsevixvfHGG1lzzTWTJGPGjKlsiwqfxMSJE7Pjjjvmueeey+abb56ddtopHTp0yKhRo3Lrrbdm0qRJ2WCDDTJ8+PCsssoqlfOefvrp7L333pWAorq6Oo2NjZXydu3a5f7778+WW25ZOTZ69OhssMEGSZKBAwfm0EMPXaQxzpo1KxtttFFGjhyZDTbYIIMGDUqfPn1yzz335Mgjj8ykSZOy7bbb5uGHH14S3xIAAKDklsbf3zWfuAVgieratWsee+yxDBw4MLfeemuuuuqqTJkyJe3atUuvXr1y/PHH54QTTkinTp2anNenT58899xzuf766/OHP/whI0eOzDvvvJOuXbtm++23z5lnnllZa2Suoigya9asJElDQ8Mij7FNmza59dZb87WvfS0vvfRS5RGauVZeeeUMHDjwY34HAAAAlj4zRD4BM0Qou5EjR+bHP/5x7rzzzspslJ122ilXXnllevXqtZxHBwAAfFqYIQK0KOuuu25uv/32TJgwIaNGjUrPnj2z+uqrL+9hAQAALJRABPjEunXrlm7dui3vYQAAACwyu8wAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApVOzvAfA8rHOaX9e3kMAlqNRF+6+vIcAAADLlRkiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSEYgAAAAApSMQAQAAAEpHIAIAAACUjkAEAAAAKB2BCAAAAFA6AhEAAACgdAQiAAAAQOkIRAAAAIDSaZGByP3335/ddtst3bp1S+vWrdOzZ89sv/32ueaaa9LQ0NDsOVOnTs1pp52W9dZbL23atMk666yTs88+O7NmzVrGowcAAABauprlPYCP+u1vf5tjjz02RVEkSaqrqzN27NiMHTs2Dz/8cIYMGZI77rgj7dq1q5wzefLkbLfddnn++eeTJFVVVRk9enT69euX4cOH57777ktNTYu7VAAAAGA5aVEzRF566aUcf/zxqa2tzcCBAzNp0qTMmTMnr7/+ei688MLU1NRk6NCh6d+/f5PzDjjggDz//PNp165drrnmmsycOTNjxozJTjvtlAceeGCe+gAAAEC5tahAZMiQIamvr8/RRx+dI488Ml26dEl1dXXWXHPNnHrqqTnuuOOSJHfddVflnD//+c8ZOnRokmTgwIE54ogjKo/Z/OEPf0iXLl1yzjnnZOLEicvlmgAAAICWp0UFImPHjk2S9O7du9nytdZaK0kyY8aMyrEBAwYkSTbeeOP07du3Sf1OnTrlyCOPzMyZM/OXv/xlaQwZAAAAWAG1qECkR48eSTLf8OLuu+9OkvTp06dy7O9//3uSZP/992/2nN122y1Jcs899yyxcQIAAAArthYViPTt2zd1dXW59957c8wxx+Tll1/OjBkzMmLEiBxxxBG5//77065du/z4xz9OkkyYMCFTpkxJkmy55ZbNtrnJJpskSUaMGLFsLgIAAABo8VrU1iu9evXKPffck29/+9sZMGBA5XGYuTbaaKMMGjQoG2+8cZI0WRdk/fXXb7bNlVdeOTU1NRk1atRij+eNN95YYPm4ceMWu00AAABg+WtRgUiSvPfee5k5c2azZe3bt28SQsyaNavydZcuXebbZufOnfPOO+9k1qxZadOmzSKPZc0111zkugAAAMCKo0U9MvPQQw9lr732qoQe6667brbddtv07NkzSfL0009n3333zS9+8YskSatWrSrntm/ffr7ttm7dOknTxVgBAACA8mpRM0ROPPHENDQ0ZI011shNN92U7bbbLknS2NiYW265JT/4wQ/y7rvvpl+/fjnyyCPTrl27JElNTU2qq+ef7cwtmz59ejp37rzI4xkzZswCy8eNG5cttthikdsDAAAAWoYWE4iMHj06zz77bJJk8ODBlTAk+SDQOOigg9KlS5fsuuuumTZtWoYNG5Ztt902SVJfX5/x48ene/fuzbY9efLkJElRFIs1prkzUwAAAIBPlxbzyMzYsWOTJCuttFK++tWvNltnl112yUorrZTkg9kZK6+8curq6pIkI0eObPacadOmZdq0aUmSDh06LOlhAwAAACugFhOIzA02amtrU1VVtdD6cxdR7dOnT5LkqaeearbeY489liTp2LFjOnXqtCSGCgAAAKzgWkwg0rt379TU1GTSpEmV2SIf9c9//jNTp05Nkmy11VZJkp122ilJMmTIkGbPGTp0aJJks802W9JDBgAAAFZQLSYQad++ffbff/8kyfnnnz9P+bRp03LssccmSb71rW9lrbXWSpIceuihqa6uziOPPJK77rqryTkTJkzIwIEDkyR77LHH0hw+AAAAsAJpMYuqJsnll1+ef//737nyyivz5JNPZqeddkqHDh0yatSo3HrrrZk0aVI22GCD/Pa3v62cs/baa+fAAw/MTTfdlIMPPjgDBgzIN7/5zbz44os56qijMmnSpHTu3DlHHHHEcrwyAAAAoCVpUYFI165d89hjj2XgwIG59dZbc9VVV2XKlClp165devXqleOPPz4nnHDCPGuBXHHFFXnxxRfz7LPP5pBDDmlSVl1dnauvvjorr7zysrwUAAAAoAVrUYFIkrRt2zbHHXdcjjvuuEU+p0uXLhk+fHjOOuusXHXVVZVdZTbccMNcdtll+frXv760hgsAAACsgFpcIPJx1dXVpX///unXr19GjBiRjh07pnfv3st7WAAAAEAL9KkJROaqq6urbMULAAAA0JwWs8sMAAAAwLIiEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDptPhApCiK7Lzzzqmqqsq2226bxsbGZutNnTo1p512WtZbb720adMm66yzTs4+++zMmjVrGY8YAAAAaOlqlvcAFuY3v/lNhg4dmrq6ulx77bWprp43w5k8eXK22267PP/880mSqqqqjB49Ov369cvw4cNz3333paamxV8qAAAAsIy06Bki//3vf3PqqacmSX7xi19kvfXWa7beAQcckOeffz7t2rXLNddck5kzZ2bMmDHZaaed8sADD6R///7LctgAAABAC9diA5GGhoYcdthhmT59er72ta/lmGOOabben//85wwdOjRJMnDgwBxxxBFp3bp1evbsmT/84Q/p0qVLzjnnnEycOHFZDh8AAABowVpsIHLBBRfk8ccfT8eOHTNo0KBUVVU1W2/AgAFJko033jh9+/ZtUtapU6cceeSRmTlzZv7yl78s9TEDAAAAK4YWGYg888wz6devX5Lksssuy1prrTXfun//+9+TJPvvv3+z5bvttluS5J577lnCowQAAABWVC1updHZs2fnsMMOy5w5c7Luuutm0qRJOeGEE1JbW5stttgie+21V1q3bp0kmTBhQqZMmZIk2XLLLZttb5NNNkmSjBgxYtlcAAAAANDitbhA5OKLL84LL7yQJBk3blz+9Kc/pX379vnXv/6Viy++OOuvv35uuumm9OnTp8m6IOuvv36z7a288sqpqanJqFGjFnssb7zxxgLLx40bt9htAgAAAMtfiwpE3nrrrZx//vlJPpjxcdttt2W11VZLkjQ2NmbAgAH50Y9+lK9+9at59NFHU19fXzm3S5cu8223c+fOeeeddzJr1qy0adNmkcez5pprfswrAQAAAFqyFrWGyJVXXplp06alpqYmt9xySyUMSZLq6ur84Ac/yHHHHZepU6fm7LPPTqtWrSrl7du3n2+7cx+xmTFjxtIbPAAAALDCaFGByAMPPJDkg4VQ5zc745vf/GaS5O677067du2SJDU1Namunv+lzC2bPn36Yo1nzJgxC3w98cQTi9UeAAAA0DK0qEdmJkyYkCT50pe+NN863bt3T5LMmjWrEojU19dn/PjxlbKPmjx5cpKkKIrFGk/Pnj0Xqz4AAACwYmhRM0Q6duyY5IM1P+Zn6tSpla9XWmml1NXVJUlGjhzZbP1p06Zl2rRpSZIOHTosoZECAAAAK7IWFYh89rOfTbLgLXIfe+yxJEmPHj2y0korpU+fPkmSp556aoH1O3bsmE6dOi3J4QIAAAArqBYViOy+++5Jkuuvvz5vvvnmPOVTp07NpZdemiTZc889kyQ77bRTkmTIkCHNtjl06NAkyWabbbbExwsAAACsmFpUILLvvvvmC1/4Qt57773svPPOuf/++zNnzpzU19fngQceyLbbbptXXnklbdu2zSmnnJIkOfTQQ1NdXZ1HHnkkd911V5P2JkyYkIEDByZJ9thjj2V+PQAAAEDL1KICkerq6tx666353Oc+l3//+9/52te+ljZt2qR169bZcccd8+yzz6ZVq1a58cYbs+666yZJ1l577Rx44IFJkoMPPjg33nhjZsyYkaeffjpf//rXM2nSpHTu3DlHHHHE8rw0AAAAoAVpUbvMJMlnPvOZPP7447nxxhtz880357///W/efvvtdOzYMVtuuWVOO+20bL311k3OueKKK/Liiy/m2WefzSGHHNKkrLq6OldffXVWXnnlZXkZAAAAQAvW4gKRJGnfvn2OOuqoHHXUUYtUv0uXLhk+fHjOOuusXHXVVZVdZTbccMNcdtll+frXv740hwsAAACsYFpkIPJx1NXVpX///unXr19GjBiRjh07pnfv3st7WAAAAEAL9KkJROaqq6urbMULAAAA0JwWtagqAAAAwLIgEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDprDCByOOPP57WrVtn++23b7Z86tSpOe2007LeeuulTZs2WWeddXL22Wdn1qxZy3agAAAAQItXs7wHsCimTJmSgw46KHPmzGm2fPLkydluu+3y/PPPJ0mqqqoyevTo9OvXL8OHD899992XmpoV4lIBAACAZWCFmCHyve99LyNHjpxv+QEHHJDnn38+7dq1yzXXXJOZM2dmzJgx2WmnnfLAAw+kf//+y3C0AAAAQEvX4gORgQMH5n//939TVVXVbPmf//znDB06tFL3iCOOSOvWrdOzZ8/84Q9/SJcuXXLOOedk4sSJy3LYAAAAQAvWogORF198MSeccEKqqqpy0kknNVtnwIABSZKNN944ffv2bVLWqVOnHHnkkZk5c2b+8pe/LPXxAgAAACuGFhuIzJw5MwcccECmT5+en/zkJ9l9992brff3v/89SbL//vs3W77bbrslSe65556lM1AAAABghdNiA5ETTjghL7zwQrbaaqucf/75zdaZMGFCpkyZkiTZcsstm62zySabJElGjBixdAYKAAAArHBa5NYrt956a6666qp07do1t9xyy3x3iPnwuiDrr79+s3VWXnnl1NTUZNSoUYs9jjfeeGOB5ePGjVvsNgEAAIDlr8UFIqNHj85RRx2Vqqqq3HDDDenZs+d8686aNavydZcuXeZbr3PnznnnnXcya9astGnTZpHHsuaaay5yXQAAAGDF0aIemamvr89BBx2Ud999N6ecckpl/Y/5adWqVeXr9u3bz7de69atkyQzZsxYMgMFAAAAVmgtaobImWeemUcffTRbb711fv7zny+0frt27ZIkNTU1qa6ef7Yzt2z69Onp3LnzIo9nzJgxCywfN25ctthii0VuDwAAAGgZWkwg8re//S0XXXRRVllllQwZMmS+64Z82NzHZOrr6zN+/Ph079692XqTJ09OkhRFsVhjWtDjOgAAAMCKq8UEIr///e9TFEXeeeedBa7d8fDDD6eqqipJcu2116auri7Tpk3LyJEjmw1Epk2blmnTpiVJOnTosHQGDwAAAKxQWswaIrW1tWnTps18X7W1tUmSqqqqyrFWrVqlT58+SZKnnnqq2XYfe+yxJEnHjh3TqVOnZXMxAAAAQIvWYgKRgQMHZubMmfN9/fWvf02SbLvttpVjhx56aHbaaackyZAhQ5ptd+jQoUmSzTbbbNlcCAAAANDitZhA5OM69NBDU11dnUceeSR33XVXk7IJEyZk4MCBSZI99thjeQwPAAAAaIFW+EBk7bXXzoEHHpgkOfjgg3PjjTdmxowZefrpp/P1r389kyZNSufOnXPEEUcs55ECAAAALUWLWVT1k7jiiivy4osv5tlnn80hhxzSpKy6ujpXX311Vl555eU0OgAAAKClWWFmiGy//fYpiiIPPfTQPGVdunTJ8OHD8+Mf/zh1dXWV4xtuuGH+8pe/ZL/99luGIwUAAABauk/FDJEkqaurS//+/dOvX7+MGDEiHTt2TO/evZf3sAAAAIAW6FMTiMxVV1dX2YoXAAAAoDkrzCMzAAAAAEuKQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNJp8YFIY2Nj6uvrl/cwAAAAgE+RFhmIPP7449l7773TtWvXtGrVKrW1tVlvvfVy3nnnZebMmc2eM3Xq1Jx22mlZb7310qZNm6yzzjo5++yzM2vWrGU8egAAAKClq1neA/io66+/Pt/97nfT0NCQ9u3b58tf/nLefvvtvPbaaznrrLNy77335oEHHkibNm0q50yePDnbbbddnn/++SRJVVVVRo8enX79+mX48OG57777UlPT4i4VAAAAWE5a1AyR5557Lt/73vfS0NCQk046KePHj8+jjz6aV155JVdccUWS5B//+Ed++ctfNjnvgAMOyPPPP5927drlmmuuycyZMzNmzJjstNNOeeCBB9K/f//lcTkAAABAC9WiApFTTjkls2fPzimnnJKLL744HTp0SPLBjI9jjz02e+21V5Lk5ptvrpzz5z//OUOHDk2SDBw4MEcccURat26dnj175g9/+EO6dOmSc845JxMnTlz2FwQAAAC0SC0mEJk2bVrat2+fzTffPGeddVazdTbffPMkyZtvvlk5NmDAgCTJxhtvnL59+zap36lTpxx55JGZOXNm/vKXvyylkQMAAAArmhYTiNTV1eX222/PE088kbq6umbrzA1CPlz+97//PUmy//77N3vObrvtliS55557luRwAQAAgBVYiwlEFqahoSF33HFHkmTHHXdMkkyYMCFTpkxJkmy55ZbNnrfJJpskSUaMGLEMRgkAAACsCFaYrVeuueaajB07NklywgknJEmTdUHWX3/9Zs9beeWVU1NTk1GjRi12n2+88cYCy8eNG7fYbQIAAADL3woRiIwbNy6nnXZakuSII47IF77whSTJrFmzKnW6dOky3/M7d+6cd955J7NmzWqyXe/CrLnmmh9zxAAAAEBL1uIfmWlsbMxhhx2WSZMmZe21184ll1xSKWvVqlXl6/bt28+3jdatWydJZsyYsfQGCgAAAKwwWvwMkTPPPDN/+9vf0qZNm9xyyy3p3Llzpaxdu3ZJkpqamlRXzz/bmVs2ffr0JucvzJgxYxZYPm7cuGyxxRaL3B4AAADQMrToQOSWW27J+eefnyT57W9/my996UtNyuc+JlNfX5/x48ene/fuzbYzefLkJElRFIvVf8+ePRd3yAAAAMAKoMU+MvPoo4/miCOOSJKceuqpla8/bOWVV65swTty5Mhm25k2bVqmTZuWJOnQocNSGi0AAACwImmRgci///3v7LnnnpkxY0b222+/XHDBBfOt26dPnyTJU0891Wz5Y489liTp2LFjOnXqtOQHCwAAAKxwWlwg8sILL2THHXfMxIkTs91222Xw4MGpqqqab/2ddtopSTJkyJBmy4cOHZok2WyzzZb8YAEAAIAVUosKRMaPH5+vfe1rGT9+fDbeeOPccccdC90m99BDD011dXUeeeSR3HXXXU3KJkyYkIEDByZJ9thjj6U2bgAAAGDF0qICkYsvvjjjx49PkvznP/9J9+7d07Zt22Zfw4YNS5KsvfbaOfDAA5MkBx98cG688cbMmDEjTz/9dL7+9a9n0qRJ6dy5c7NrkAAAAADl1KJ2mXn22WcrX9fX16e+vn6+dRsbGytfX3HFFXnxxRfz7LPP5pBDDmlSr7q6OldffXVWXnnlJT5eAAAAYMXUomaIDB06NEVRLNJr++23r5zXpUuXDB8+PD/+8Y8ru84kyYYbbpi//OUv2W+//ZbD1QAAAAAtVYuaIfJJ1NXVpX///unXr19GjBiRjh07pnfv3st7WAAAAEAL9KkJROaqq6urbMULAAAA0JwW9cgMAAAAwLIgEAEAAABKRyACAAAAlI5ABAAAACgdgQgAAABQOgIRAAAAoHQEIgAAAEDpCEQAAACA0hGIAAAAAKUjEAEAAABKRyACAAAAlI5ABAAAACgdgQgA8KlTX1+fxsbG5T0MAKAFE4gAAC3aMccck6qqqowaNWqB9W6++eZsvfXWqaurS21tbVq3bp3NN988N99881If47Bhw9KqVatUVVXlr3/961LvDwD45AQiAECLddFFF2XAgAELrXfUUUfl4IMPzj/+8Y/U1dVl6623zsorr5ynnnoqBx98cH7yk58stTFOnTo1hx9+eBobG/P9738/O++881LrCwBYcgQiAECLdMkll+T0009faL3f/va3+d3vfpf27dvnmmuuyfjx4zN8+PCMHj06hx12WJKkf//+GT58+FIZ54knnpiRI0fmM5/5TH75y18ulT4AgCVPIAIAtCjTp0/PQQcdlJNOOik9e/ZcYN1p06blZz/7WZLk1ltvzRFHHJGqqqokSbt27fK73/0u3bp1S5Kl8ujM3XffnUGDBqWqqirXXnttOnTosMT7AACWDoEIANCinHPOORkyZEi+9KUv5Yknnlhg3REjRqRPnz459NBDs+uuu85TXltbm0033TRJ8uabby7Rcb7zzjs56qijkiQ/+tGPsu222y7R9gGApatmeQ8AAODDqqurc9555+W0005LTc2Cb1X69Omz0EVM5wYhdXV1S2yMyQeLvb711lvZYIMNcv755y/RtgGApU8gAgC0KOedd15qa2uXSFsjRozIiy++mCTZcccdl0ibSXLTTTfl1ltvTZLsvPPOOe+88zJ16tT07Nkz++67b3r16rXE+gIAlg6PzAAALcqSCkOSD8KVJFlttdVy4IEHLpE2J0+enBNPPLHy77vvvjvPPvtsHn/88fz0pz/NhhtumJNPPjn19fVLpD8AYOkwQwQA+FS67777ctNNNyX5YPvedu3aLZF2zzvvvLz99tuprq7OoEGDcvjhh1fKRo4cmb59++biiy/OpEmTMmjQoCXSJwCw5JkhAgB86owfP74SVOy1116V7Xc/qWnTpmXAgAFJkqOOOqpJGJIk6667bm677ba0a9cu11xzTZ5//vkl0i8AsOQJRACAT5X6+voccMABeeutt7Luuuvm2muvXWJtP/roo5kxY0aS5Oijj262zmqrrZatttoqSXLXXXctsb4BgCVLIAIAfKocf/zxefjhh9OhQ4fccccd6dKlyxJre8KECUmSNm3a5POf//x863Xv3j1J8vrrry+xvgGAJUsgAgB8alx22WX57W9/m1atWmXIkCHZeOONl2j7HTt2rPxvVVXVfOtNnTo1yZLf6hcAWHIEIgDAp8LNN9+ck046KUnyq1/9KrvvvvsS7+Ozn/1skg9mikyaNKnZOg0NDXnyySeTJBtttNESHwMAsGQIRACAFd6QIUNy2GGHpbGxMaeeemqOPfbYpdLPOuusk//5n/9JklxwwQXN1rn66qvz1ltvpaamJrvssstSGQcA8MkJRACAFdrf/va3HHLIIamvr89hhx2WCy+8cKn29/Of/zxJcskll+SMM87IuHHjkiTjxo3LOeeck+OOOy5J8t3vfjc9e/ZcqmMBAD4+gQgAsEI7/fTT09DQkOSDmSJt27ad7+vDhg0bVjk+bNiwRe5vn332qcwOOf/887PGGmukpqYma6yxRs4999w0NDRkyy23zKWXXrrkLhIAWOIEIgDACu3ZZ5+tfD179uzMmjVrvq8Pa2xsrBxvbGxcrD5PO+20PPXUUznmmGOy0UYbpa6uLm3atMlGG22Us88+O/fff3/atWu3JC4PAFhKapb3AAAAFqQoigWWz5kz52O1u/322y+07QX5whe+kCuvvPJjnw8ALF9miAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJROzfIeAAAsD+uc9uflPQRgORt14e7LewgALEdmiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAA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kuSss87KzjvvnPr6+pxwwgnp2LFjNtxww9x///1JkgsvvDDrr7/+ch4lAAAA0BJUFZ+ifWjr6+tz0UUX5ZJLLsmkSZOSJD179syFF16Yvn37LufRAQAAAC3FpyoQmWvWrFn5z3/+k9atW2ejjTZKVVXV8h4SAAAA0IJ8KgMRAAAAgAX51KwhAgAAALCoBCIAAABA6QhEAAAAgNIRiAAAAAClIxABAAAASkcgAgAAAJSOQAQAYBEVRZEZM2bMc/ydd97J1KlTl8OIAICPSyACNFEURerr69PQ0LBcx1AUxXzLR44cmXfffXfZDQgohZ/97Gfp1atXTjjhhGbLH3744WyyySY544wz5inr169f1lhjjZx44olLeZQA85ozZ84Sbc/9IGUhEIHFMGTIkNxwww3zHP/Od76TDTfccLFe22677UL7W9AvtzvvvDM//OEPc+WVV36ia/qoe++9N7W1tenTp89C65588sk599xzM3LkyMXu5/XXX2/2+OjRo/O1r30tF1100XzPPeuss7Leeuvloosuyvvvv7/YfQM0Z/r06Xn11Vfne4PdqlWrvPDCC7n66qszadKkyvEZM2Zk8ODBef/999O1a9dlNFqgLBblj/5f/epX+dznPpdTTz01EyZM+MR9uh+kNApgkZx//vlFkqJTp07Fm2++2aRsjz32KJIs1mvdddddYH8PPfRQ0aNHj+KGG25otvycc84pkhT77LNPs+V9+/Yt9t133+Kuu+4q6uvrF/k6hw8fXiQpttlmm3nKJk2a1OTfm2yySZGk+OlPf7rI7RdFUQwePLho27ZtcfLJJ89Ttt9++xVJilatWhXDhg2bp/ytt94q2rZtWyQpVl555eK1115brL4B5ueUU04pkhRHH330fOtsvvnmRZLi0ksvrRy79tpriyTFWmutVcycOXMZjBRYHs4555xivfXWWyqvwYMHN9vnnDlziu7duxfHH398MXLkyPmObffddy+SFFtssUXR2Nj4ia/V/SBlYYYILKJvf/vb6dy5c6ZMmTLPlOg2bdokSX79619XpvcVRZEePXokSSZPnlw59uCDDyZJWrduvcD+Xnzxxbz11lv59re/nV/84hfzlM/ts7l2xo8fn//93//NH//4xwwYMCBVVVWLfJ01NTVJktra2ibHn3322fTu3TvXXXddkg9mr4wYMSJJsv/++y9y+0VR5M9//nNmzpyZX/7ylznmmGOalF9xxRVZbbXV0tDQkL59++a9995rUn7xxRdn5syZadWqVYYMGZJ11113kfsGWJC573tz31+bc9JJJ6VNmzZ5++23K8cuv/zyJMnpp5++wHOBFVt9fX1effXVpfL66H3XXMOGDcv48eNz+eWX54UXXmi2zpQpU3L//fcnSX7xi18s1n3f/LgfpCwEIrCI1lhjjZx33nlJkltuuSUPP/xwpaxVq1aL3d7cXzTzc8wxx+SWW25JTU1NTj311Pz6179u9vzmfoFeffXVmTNnTrp27Zprr7021dXz/7/6a6+9llVWWSXrrLNOevfuXfll9vjjj6d3797p0aNHzj333Fx33XWZOHFiHnnkkSTJc889l9mzZ2fNNdfMpptuusjXXVVVlRtvvDGHH354kmTAgAE5++yzK+Wrrrpqfve73yVJxowZ0yQMGjt2bH7zm98kSc4999zstNNOi9wvwKL66B8TEyZMyNNPP52RI0dmhx12yL///e/89Kc/zfvvv5+//e1veeaZZ9KlS5fss88+efvtt/P666/nlVdeWSLT1oGWo0uXLkmSrbfeuskHYJ/k1b179yRJhw4dmu3z1ltvTZLsueee2WOPPZqtM2TIkMycOTPV1dU5+uijF/jI9qBBg5ptw/0gZbXgv8iAJo4++uj0798/o0aNypVXXpntttsuydIJRJJk3333zeDBg3PQQQelX79+OeCAA7LqqqsmSSXk+GjfU6dOzWWXXZYkueiii9KtW7cF9tHY2JiJEydm4sSJTY5Pnz49r7zySpIPnuO85ZZb0qlTp1xwwQVJUgmEdtlll4Vex0dVV1dn4MCBee211zJ8+PC0bdu2Sfnuu++e3XbbLWuvvXZ++tOfVo6fccYZmTFjRvr06ZPTTjttsfsF+Dgefvjh7LfffgusM3ny5Ky22mpNjp100km5+OKLl+bQgGXoo/crzWlsbFzgB1FFUTQ7g6O5Gb9Tp07N73//+1RVVeX//b//N9/+Lr300srXL7300nz77ty5c771rW/Ntx33g5SRQAQWQ21tbU4++eS8+eabTVLsub/4jjvuuBx33HHznDf3E4WP44ADDsj777+fXXfdtRKGJPN+gjnXFVdckUmTJmXTTTfNEUccsdD211133bz99tupq6tLbW1tnn322WyxxRbZcccdc/fdd2f69Ok54YQTMn369PTv3z+rrLJKkmTo0KFJknXWWSfPPvtskg9+mTY2Nqa+vj5z5szJ7Nmzs+OOOzbbb01NTf73f/83Dz74YA488MB5ym+//fYmNwfPPfdcBg8enNra2gwaNOhjhVAAH7bXXnvlH//4R9q0aZPWrVtnypQpSZLrr78+f/rTnzJ9+vSccsop2WSTTdKnT5/U1dWlpqam8v774osvZty4cVl//fWz5pprJvm/nRlmzpw5T0ACrNgW9rhz8sFipD/5yU9y0EEH5Xvf+15lBshc1113Xf785z/nvPPOy0YbbVQ53tx93fXXX5+pU6dm3333zcYbb5wkufnmm7PXXnulffv2ST6YHTI3BNl0000r92RzFUWRTTbZJC+88EJOOeWUdOrUqdlxux+krKqKYgF7GQGL5OCDD87NN9+c7t27p3PnzpXjr776aurr69O7d+9KaDJ9+vSMGTOm2V9a559/frPbOS5J48aNW+BN+lNPPZXNN988O+64Y/72t7/liSeeyJZbbpmNNtoozzzzTGprazNp0qR079499fX1C+yrrq6uyarf5557bgYPHvyxxj158uRMmjQpbdq0Sc+ePecp32GHHXL11Vd/rLaBcvra175Wee5+fs4777z87Gc/a7bs8MMPz/XXX59LL710vlv1Ap8ev/vd73LUUUdl6623zh//+MdceeWVGTVqVK6//vpKnfPOOy9nnXVWVl555bz00kuV4GCu73//+7nqqquy9tpr59VXX02PHj0yfvz4DB06NF/72tcq9ebMmZMNN9wwI0eOzHPPPZeNN9447733XlZbbbX06NEjN9xwQz7/+c/ns5/9bEaOHJnq6uo0Njbm7rvvzu67715pZ/DgwTnssMPSo0eP/Pe//60EKQvjfpCyMEMEloDGxsYkyc9+9rP88Ic/rBzv2bNnxo4dmyeeeKISlDz00EP56le/2mw7c7drrKmpydprr71Exzd3K7RF+XRjrilTpqRv376pqqrKddddV1mv5E9/+lPq6+vTs2fPfOlLX6rU//e//50RI0Zkk002yVprrTXPL8jZs2fn1Vdf/UTXMmvWrGbb+PA4ABbFH/7wh1RXV6ddu3aZOHFievTokaIocvzxx+fCCy/M9OnTLZIKNGv06NG54IILMmfOnBx55JH5yle+kiSVtTWOPvro1NXV5ZJLLsm3v/3tyj3e3//+9yTJD37wgwXObvjVr36V1157LQcccEBldsj111+fGTNmZMKECVlzzTVzxhlnZOTIkdl0003z3e9+N8cff3zOPffc7Lrrrqmurs4777yTk046KUnyy1/+cpHDkI9yP8inmUAEFqChoSFTp05N+/btFxgkzA1EFkdz58z9FKFHjx6V5zWXhHfffbfy2M7ctUvGjx+fDTbYIG3btk3r1q1TU1OT6urqzJo1K0nyj3/8IxtssEHGjx+f1q1bZ7/99sv06dNz2WWXVVYWP+2003LsscdW+vne976XESNG5Kc//WkOOOCAecYx9xf/vvvuW1kk7JP6yU9+kv79+5syCSy2Dz/O+PDDD2fupNmqqqq0a9cu7dq1W15DA1q4LbbYIqeddlrOO++8nHbaaXnkkUcyZ86cSuBx2GGHpU+fPvnPf/6TCRMm5IILLsj48ePz4osvprq6Oocccsh823788cdz5plnpra2trJ2yJw5cyprEp1//vl5/PHHc9lll6V169a54YYbsuGGG+aXv/xlnnzyyfTv3z8/+clPcthhh2XChAnZY489ctBBBzXbl/tBys4uM7AAL7/8crp06ZI2bdqkpqYmbdu2Tdu2bbPVVls1qbewqYLNae6cJbFN2sJMmzYtyQfPlE6fPj0zZszI9OnTM23atEyfPj2NjY1ZddVVM2PGjIwfPz6dO3dOly5dMnXq1EydOjXPPvts/v73v6eqqmqeX3Kvv/56kuQzn/lMs33PmDFjqV3X0mwb+PR74IEHFlg+e/bsZTQSYEVxxhlnpHfv3vnHP/6RW265JY8++mimT5+eL3zhC9lwww1z1llnJflgfbcJEyZU3me23nrrrLHGGs22+frrr2fHHXfMzJkz06VLl5x99tk55JBDsscee+T111/PxhtvnKOPPjrV1dVZddVVc+6552aTTTZJ69at079//yTJmWeemYMPPjj33HNPVltttfnuLJO4HwQzRGARNTY2Zs6cOc3O7Jg5c2aSxVtUtbmb66lTpzb592uvvZb11lvv4w45Z555Zvr169fk2LvvvpvVV189q622WrNjmDBhQmXryL333ju///3vU1dXVymf+wlDURSZNm1ak2djR48enWT+vwDnhjFzzZ49OzNnzkzr1q3TunXrBa7KPj9t2rRJXV3dx5qlA7Q8F1xwQX75y1+mtrY2tbW1ad26dWpraz9RYNzQ0JDGxsbMmjUrM2bMyL333pvNN9+8Uj5nzpzcfvvtlX/Pnj07RxxxRE444YTKNpIHH3xw7rrrrnTp0iUdO3ZMdXV1xo0bVxnzgAED0tDQkBkzZmTGjBlZeeWV8/LLL3/sMQMtX5s2bXLJJZdkzz33zCmnnJJ99903SSoBwYEHHpjf/e53uf/++3PBBRdk8uTJSbLAXat69uyZTp06Zdq0aXn77bdzyy23ZKWVVqqce8kll6RVq1bZZ5998uUvf7nJoq377bdf9t133/zxj3/MkCFD0qZNm9x2221NFuX/KPeDlF4BzFd9fX0xceLEYvr06UVjY2Px4IMPFkmK7bbbrkm9Qw89tFhvvfXmebVq1apIUqy77rrzlG211Vbz9HfhhRcWSYq11167KIqieOutt4oklWPN9dHcq23btkWS4sILLyyKoihmz55d3H777cXtt99eTJ48eb7X+9BDDxVrrLFGkaQ4+eSTi4aGhibl//jHP4qqqqrKmH7/+99XymbPnl3U1tYWHTt2nG/706dPLyZPnlxMmzatKIqiuPbaayttJSlatWpVtGnTZpFeN9xww4L+0wErqLPPPrvJ+8LSeD366KNN+rzjjjualHft2rVIUnz+858vZs+eXRRFUey7776L1Uf37t2Xx7cPWIoGDhxYJCm23nrrJsd32mmnIklRXV1dVFVVFaNGjaqUPfPMM0VVVVXRpk2bomvXrkV1dXXx5ptvVsq7d+9eJCmGDh1aOfb73/++uPXWW4vRo0cXDQ0NxaBBg4okxZ577rnA8T300ENFr169Ku9DHTt2LH71q19V3scWlftBysQMEViAVq1aZeWVV57n+EcX2bvhhhuaPX/uoqr//Oc/m+w+Mz8nn3xyTjrppMonoR9et+Shhx7KOuuss0jj3n777fPwww9XxllbW5u99957vvXnzJmTjTfeOK+88koaGhpSW1ubO++8M3feeWeTejvvvHOKosj3vve9XH311bn//vvTt2/fJMlLL72UOXPmzPM40Yd99Jn8qqqqtG7dOu3atUvr1q3TqlWr+T77OX78+CaPGTU0NCz0+wCseKqqqlJTUzPPDJGP84lh8sGnlx+dIfLR2SZzp5P36dMnTz/9dPbff//cdtttefbZZ3PJJZfk1FNPzdVXX51rr702bdu2rSwo2NwuM3O3mPzwjgrAp9svfvGL9OnTJ42Njdlqq62aLIz/+c9/PgcccECGDBmSWbNmZYcddsjqq6++wPbm3lslHyweeu6556Z169a55JJL5qlbFEXuv//+/PKXv8xf//rXJB/soNWtW7fcfPPN+dGPfpSLLroo3/nOd9K3b99suOGG8+3X/SCltHzzGFixzJ0hsvvuuxdFURTvv/9+8e677xYzZswoZs+ePU+C3qNHjyJJk1kZjY2NRX19fTFz5szi/fffLyZMmDDf/t57771KWj5y5MhFHud2221XJCl+/etfL7TuHXfcUfTu3Xuhn3a2atWqmDVrVnHYYYcVs2bNKjbeeOOie/fuRWNjY1EURTF48OAiSXHKKacs8jgXxdNPP13ssssulXF07ty5+M53vlO89NJLS7QfoJxeeOGFoqqqqlhnnXWK008/vUhSnHTSScXll19eJCnq6uqKMWPGNHvut7/97SJJcemlly7bQQPLxfxmiBRFUWy22WZFkqJv377zlD3//POV+5grr7yySVlzM0Q+7LzzziuSFKeddlrlWGNjY/HYY48Vp59+erH22mtX2l5jjTWKm2++uVJv+PDhRZ8+fZrcz6233nrF0Ucf3exMOfeDlJFFVeET+PWvf53OnTs3SbSrqqoqr7Fjxyb5YA2Ruceqq6srC7R26NAhq6222nzb/ziLtX7YglLzxx9/PF/60pey11575eWXX86+++6b8ePHpyiKFEWRRx99tDIjZdddd82LL76Y1q1b5/rrr0/r1q2z6667Zvz48Rk+fHiS5MEHH0yy5LY7e+mll7Lffvvli1/8Yu69997U1dXlnHPOyejRozNo0KCsv/76S6QfoNzOP//8FEWRY445pskslO9973vp0aNHampqrAUCLNBTTz2Vf/7zn0mSm2++OU8++WST8g9vD3v//fcvcruvvvpqzj///PTo0SNnnHFG5XhDQ0OOP/74XHDBBRk9enS6deuWCy+8MC+//HIOPPDASr2tt946Tz31VO677758/etfr7R51VVXVWYRux+k7DwyA59A27Zt071798ouNHMDkST573//W6lXU1NTWViqKIo0NjamoaEhs2fPXmDoMXfLsyRZd911F3t8cxd7bc4666yTSZMmZZVVVskVV1zRZIXwQYMG5fvf/36qq6tz+eWXN7tQ7B577JFf/OIXue666/KVr3wlf/vb35IkX/7ylxd7nM255JJLcuutt6Z169Y56qijcsYZZyx0iinA4njiiScyZMiQdOjQId/73vcqW1om/7dY4uc+97n8z//8z3IcJdDSnXfeeUmS7t27Z/z48TnuuOPy6KOPpqqqKg0NDfnZz35WqXvbbbflmWeeyRe+8IUFtvn+++/ngAMOyIwZM/LjH/84w4cPz/PPP5/nn38+3bt3T//+/XPooYfmwAMPzE033ZRrr70211577QLb3H///dOlS5e88847lf7dD1J2AhH4BE444YTKc+MfNmjQoBx55JGVf9fX1+cnP/lJjjrqqMVqf/bs2fPdZWbKlCl555130q5du/lu3fbRtU4+rHv37rn//vvTrl27dOvWrUnZM888k/r6+px55pmVX34NDQ0ZOXJkunXrlk6dOmWbbbZJ7969c9NNN2WnnXbK66+/ni222GK+Y0mSiRMnpra2Nu3atUtNTc0Cd43o0aNHkuQrX/lKrrjiivnWa2hoyMyZMzN9+vR5rgNgfhoaGvL9738/jY2N+f73v9/sOk/7779/pk+fnn/961/p2LFjVlpppXTs2LGyhsj8zJo1K9OmTcvs2bPTtWvXhdYHVlyPPfZY7rzzznTr1i0PPvhgPv/5z+fxxx/PjTfemEMOOSRXX311XnjhhfTo0SMbbLBBHnjggfzsZz/Ln//85/m2+eabb2aXXXbJ888/nyQ56aSTmpR/85vfzDbbbJNXX301kydPzoUXXrhIYz3wwANzzjnnNDnmfpDSW57P68CK5sNriEybNq3ZdT3GjRtXdOnSpcnzltXV1UVNTU1x7733LrGxXHrppUWSYscdd1xibRZFUcycObM48cQTiyTFNttsU+y///7FxhtvXLRp06ZIUjz44IPzjGHurjaXXXbZAtv+7Gc/u9R2jairq1ui3wfg023cuHFFp06dirq6uuLtt98uiqIozjjjjMoaInM988wzn+i96cknn1xelwgsYc2tIbLNNtsUSYoLLrigKIqiOOqoo4okxfHHH1+MGTOm6NSpU5GkGDBgQPHwww9X3hsefvjhoiiaX0Nk1qxZxSqrrNLkPnL99dcvvvnNbxY//elPm9xPvv/++5Xdsebn2GOPLZIUl19++SJfq/tBysIMEfiYfvzjH+fxxx/P/fffX9mJZvbs2dl3330zefLkfP7zn8/YsWMzYcKEnH322Tn77LOz995754Ybbljg/vNz25k6dWrat2+f2traJo/iLIq5OyrMnj07M2bMSPv27dO+ffsmdaZNm5bbb789r7/+ekaNGpXXXnstr776al5//fXKHu5znwddbbXVss0222TDDTds8ujO4YcfnjPOOCPTp09P586d893vfneRxldVVbXAFcTnXkN9fX2qq6sX+OnqnDlz7DkPLLbVVlst/fv3z1tvvbXATxNbtWqVzp07p02bNpXX3LVGxo0bl/feey+rrrpqunTpUjmnoaEhDQ0Nef/99xf4Pges2AYPHpzhw4dntdVWy/HHH5/kgx0DP/vZz+YHP/hBdthhh0yZMiWbbrppjjzyyLRq1SrbbLNNhg8fnlNPPTWPPvpos+22bt06p556aqZNm5Ztttkmm2++eTp27Nhs3cV5j1lppZXmOeZ+kNJb3okMrEjmzhBZddVVK0n07bffXhRFUTQ0NBSHHHJIkaTo1KlT8d///reyh/vkyZOLvn37FkmKqqqq4uyzzy7mzJkz337+/ve/L9G0fODAgfP00dDQ0GRl8rnj3mabbYovfvGLRZLi+9//fvHOO+/Md5zPPfdc5ZOPXr16NdlNpznvvfdeMXPmzEX6Xi/ODJg5c+YUU6ZMWaR2Aeaau+PXXM3NEFkQu8xAuXx4hshbb71VdOvWrUhSXHXVVfPUnTtTpFWrVsUTTzxROX7PPfcU7dq1K4444ojivffeW+guM82ZOnVqZWfDGTNmLPIMkWuvvXaeMveDlJ0ZIvAxvP3220mSM844I3vvvXfee++9fPvb386f/vSntG7dOrfddlt69+6doigq51x33XWZMWNGbrvttpx77rm57bbbcuWVV2abbbaZp/1WrVqlU6dOqaurqyzW+uHdD5IFryEy99PJuTNEamrm/b96dXV1TjzxxDz11FPZcccds/XWW6dXr16pqqrKxRdfnKeeeio9evRI165dm/0e/POf/8wuu+ySKVOmpEOHDnnllVeyyy675M4778yqq67a7DnNfTKxJNTU1Mz3kxOA+fnoJ5NzP130KSOwMKeffnomTJiQPn36NFk3LknuvPPODBo0KElyyimnZPPNN6+U7bLLLhk7dmyTWWWL4t13381f//rX/PGPf8xdd92VESNGZK211vrE1+F+kLITiMBimDRpUuXrr371q+nXr1/uvffeHHPMMRk1alTatGmTIUOGZIcddkjyfzfVDQ0NqampyZAhQ3LSSSfl17/+dZ5//vl85StfyTbbbJNTTz01e+yxR6XtLbfcMu++++4Cx3LZZZflxBNPzFZbbVVZ0Xtx/ehHP/pY51199dX50Y9+lJkzZ+Z73/tezjrrrHz1q1/N448/ns022yzXXnttdtppp4/VNsDyMndnr9mzZy/nkQAt3cCBA9O7d+/sscce83xo9Y1vfCP//ve/069fv5x77rnznLsoYcj48ePz2GOP5ZFHHsmwYcPy9NNPV3YmrKqqyttvv71EApHE/SDlVr3wKkCSFEWRgQMHJvngF9ngwYPz3e9+N7vuumtGjRqVHj165KGHHsree+9dOeejnzbW1tbm8ssvz5/+9KesttpqST54LvOtt96qnNPQ0LCMrqipxsbGzJkzJ6+++mruuOOOJJnnF/zjjz+ebbbZJkcffXRmz56dc889NwMGDEiPHj3y8MMPZ7PNNsvYsWOz8847Z6+99sqwYcM+9ng+vOUwwLIwZ86cJv+7qBa0fTrw6fHh2WOtWrXK6aefno033rjZuhtuuGFuuummBa570dDQkPfee2+e4//4xz+y2mqrZe+9984vf/nLPP7446murs6ee+6Z66+/Pm+//Xa++MUvNjln4sSJqaqqavb1m9/8JkmazFxe0DW6H6RMzBCBRTRjxozKwntXXHFFevTokVNPPTV//OMfs8suu2TAgAGVxVXnmnuT/NGb5b322is777xzBgwYkFtvvTXf+c53kiTvvPNOunXrlvbt22ellVZKbW1tamtr5/lFlHzwyEzywS/NXr16NTvmoijS2NiY+vr6zJgxI7vsskt+//vfN1t39OjR6d27d5NAZu4v+bvvvjvnn39+ZfGvtdZaKwMHDszOO+9cqbv66qtn2LBhOeaYYzJ48ODceeedGTVqVP7+978v0vTFl19+ubIF3Zw5c/Lb3/42SWxXCSwzc2eGLO4MkcUNUIAV08yZMz9xG2PGjMktt9yShoaGDBs2LDNmzEiStGnTplJnyy23zLrrrpuRI0emV69eOeqoo3LEEUc0uwD03PefVq1azfd+cPz48Xn33XcXKVxwP0jZCERgEbVv3z433HBDTjjhhGy22WZJPkj/X3jhhflOWVzQp43t2rXLiSeemBNPPLHJ8blrhsz9RdTQ0NBsINKmTZvK3uzz+wX94UBk9uzZC7xpX3fddbP11ltn2LBhWXPNNXPKKadkzz33TJJ85jOfyb/+9a906NAhxx9/fM4444x5dq1Jkrq6utxwww3ZZ599cuaZZ+auu+5a5Gc5e/TokYsuuqjJbJkk2XrrrRfpfIBPqkOHDunRo8diP9/+/vvvL6URAS3Jwh5nXhRrrLFGrrnmmvznP/+pHOvYsWOTmSZz1+/o2LFjdtxxxwXuNDj3HrBz584ZMWJEs3V++MMf5je/+c0iBTruBymbqmJR5k4BH0tNTU0aGhoyYsSIbLDBBst7OAv18ssvp7a2Nuuss848ZcOGDcvnPve5eWbBLElnnnlmrrvuuqy11lrZcMMNs8MOO+TAAw+0bSUAsNwdf/zx+fWvf52tt966shXtx9G/f//89re/zSabbJI+ffrkW9/61se+T3zjjTey5pprpmvXrnnnnXearTM3ELngggty2mmnLbRN94OUiUAEAAAAKB2LqgIAAAClIxABAAAASkcgAgAAAJSOQAQAAAAoHYEIAAAAUDoCEQAAAKB0BCIAAABA6QhEAAAAgNIRiAAAAAClIxABgBakKIrU19enoaFhuY6hKIr5lo8cOTLvvvvushvQp8ScOXOWaHuNjY2pr69PY2PjEm13ccewIP/617+W688yACyIQASAFcaQIUNyww03zHP8O9/5TjbccMPFem277bYL7W9Bf8Deeeed+eEPf5grr7zyE13TR917772pra1Nnz59Flr35JNPzrnnnpuRI0cudj+vv/56s8dHjx6dr33ta7nooovme+5ZZ52V9dZbLxdddFHef//9xe7702jKlCkLrfOtb30rO+ywQ37xi18skT5PP/301NbW5sc//vFC6+6555656qqrPlaQNb+flWHDhmWjjTbK8OHDmy1vbGzMnnvumc997nO55ZZblnhwU19fn0MPPTQbbbTRIn3/5+c///lPrrjiivznP/9ZgqMDYIVQAMAK4Pzzzy+SFJ06dSrefPPNJmV77LFHkWSxXuuuu+4C+3vooYeKHj16FDfccEOz5eecc06RpNhnn32aLe/bt2+x7777FnfddVdRX1+/yNc5fPjwIkmxzTbbzFM2adKkJv/eZJNNiiTFT3/600VuvyiKYvDgwUXbtm2Lk08+eZ6y/fbbr0hStGrVqhg2bNg85W+99VbRtm3bIkmx8sorF6+99tpi9f1Rc+bMKf76178Wr7zyyidqpyiKYtdddy3WW2+9pfL673//O99+n3rqqaJbt25F//79iylTpjRbp76+vujUqVORpPjJT37yia+1KIri5z//eZGk+NnPftbk+Pvvv1/Mnj278u9JkyZVfu7/+te/LnL7c+bMKU488cSiTZs2xR//+McmZTNnzizWXHPNIkmxxhprFBMmTJjn/DvuuKPS75e//OVi1qxZi9z3o48+WvTt27d46qmnFljvG9/4RpGkuPLKKxe57Y+6+uqriyRFu3btivHjx3/sdgBY8QhEAFghjB07tujcuXORpDjggAOalO27775FkuLXv/51k+M9evQokhSTJ0+uHHvwwQeLJMUGG2ywwP6uvPLKolWrVkVVVVVx0UUXzVN+wQUXNDuWovggNKitrS2SFLvvvnvR0NCwyNf52GOPFUmKr371q02OP/PMM0XXrl2La6+9tiiKopg9e3bRunXrIknx7LPPLnL7jY2NxYEHHlj5Q/X73/9+k/Lx48cXq622WpGkWHPNNef5A/8nP/lJJTBZnD+ui+KDP7BfffXV4q677irOO++84pvf/GbRpUuXjxXqNGebbbZZ7GBsUV9vvfXWfPs988wzK2HdG2+80Wyde++9t0hSdOnSpcnP4ydx4YUXFkmKc889t8nxSy+9tPjc5z5XPProo0VRfBDuJSlWWWWVxQrn3n777eJzn/tc5b/3jTfe2KT8wQcfLKqrq4skxTe+8Y15zt98882LJEX37t2LsWPHLta1nX766ZWQYkFh1KBBg+YbIC6qk046qUhSfOc735mnbNasWcXEiROLWbNmFY2NjR+7DwBaJoEIACuMX//615U/UB966KHK8f3333+xA5HPfvazC+3v1ltvrQQbl19+eZOyX/7yl0WS4pBDDpnnvH79+hVJiq5duxZvv/32Avt49dVXi65duxZrr7120atXr2KttdYqkhTt27cvevXqVayxxhrFOeecU/zoRz8qkhRHHnlkURRF8eSTT1ZCi8XV0NBQHH744ZXv5VlnndWk/O67766UnXHGGZXjb7zxRtGuXbsiSfHzn/98of28/vrrxTe+8Y3iy1/+crHmmmsWrVq1mm/gsNZaaxXTpk1b7Gv5sD333HOeMX8S//nPfyrje//99+db73/+53+KJEX//v3nW2duCNWhQ4digw02mO9rww03LP71r38128b1119frLrqqsU666xT9OrVq+jWrVsl6PjMZz5TrLrqqsXQoUOLTTfdtEhS/P73vy+K4v9+Vg899NDF/h688847xRe+8IUiSVFbW1vcd999TcrnBmRJiqFDh1aO//GPfyySFNXV1cXDDz+8WH3OmTOn6NmzZ5OfzYMPPvhjBVl33XXXQvvbbbfdiiTFHXfcMU/Z3PeLxXmNGTNmsa4XgOWnJgCwgjj66KPTv3//jBo1KldeeWW22267JEmrVq0Wu62amoX/Ctx3330zePDgHHTQQenXr18OOOCArLrqqkmS6urqZvueOnVqLrvssiTJRRddlG7dui2wj8bGxkycODETJ05scnz69Ol55ZVXknywrsctt9ySTp065YILLkiSPPzww0mSXXbZZaHX8VHV1dUZOHBgXnvttQwfPjxt27ZtUr777rtnt912y9prr52f/vSnleNnnHFGZsyYkT59+uS0005baD89evTIE088kbfeeitJ0r59+3Tv3j0jR45Mr1698vOf/zzrr79+PvOZz6RTp06LfR0f9dHraE5jY2Plv11ziqJIVVXVPMdbt27dbP2HHnooL774Ynr06JFjjz222TqjR4/OrbfemiR5//3389JLL823/69+9avZeOONmy2bPXt23n777XmOv/POO3nnnXeSJH/605/y3HPPZeutt07fvn2TfLKfla5du+bOO+9Mnz59Mnv27HkW2z3rrLNy22235aSTTsrXvva1JB+svTP35+O4445bpPV6PuyPf/xj3njjjXTs2LGyPkptbW2SZIcddsjqq6++0DYeffTRvPbaa1lppZUWWvfxxx9PdXV1s+Ns3759Pve5z6VDhw5p3bp1sz8bRVHkkUceqSwe21wdAFqo5RzIAMBi+c1vflOcccYZTdZI6Nu372J/irvpppsucp+/+93v5pnyf8kllxRJim9/+9tNjs9d62TTTTddpEdl6uvri7fffruYNm1aMXv27OKJJ54okhQ77rhjMWPGjGLixInFoYceOs8MhK9//etFkuL//b//VzzzzDPFM888Uzz99NPFk08+WTz66KPFsGHDir/97W8L7Putt94qbr755mbLPrrew7PPPltUV1cXtbW1i/WIzpNPPlk89dRTlbUZnnnmmSJJsd122833nFVWWWWh//0uvPDCec6b+3OwoBkip512WrHddtsVAwYMaHZNi6OPPro4+eSTi4kTJzaZITJnzpxm2/vo41oNDQ3FNddc06TOUUcdVWnn+OOPn6eNMWPGFG3atCmSFI888sh8xz5t2rRi4sSJxYwZM4o5c+ZUZn7069eveP/994s333yz2GCDDYqqqqriySefLIrig7U+OnbsWCQp7rvvviY/K0888UTxj3/8o3jooYeKp59+er79FkVRPPzww8U///nPZss++n381a9+VSQfrNOzoJk1zWlsbKzMcPnwGjdzv4f33HPPIrXz7W9/e6Hfz6IoihEjRiz2+8GHTZs2rTJDrX379sWgQYM+VjsALB9miACwQvnBD34wz7G5u1d07949nTt3rhx/9dVXU19fn969e1dmBUyfPj1jxoxptu3zzz8/Z5xxxmKN5/rrr8/1118/z/Hnnnuu2Zkr48aNy2qrrVb5d6tWrZrMIvnwp8tt27bNv/71r9x444357Gc/m+OOOy5JMmnSpNx///1JPpi1Mb8x19XVNdkF5txzz83gwYPnqfezn/1sYZeZyZMnp7GxMbW1tdl3333nKd9hhx1y9dVXz3P8i1/84kLb/qh27dolSdZee+15ZvK89dZbmTZtWtq3b7/ANp5//vlcdtll2XjjjXPCCSdUjj/xxBOVGRNHH330POc99NBDeemll/Lmm28u9Pvy0ksv5U9/+lN69OiRo446Kkly//335zvf+U5uvPHG/P73v8/EiRNzzTXXJPlgZs7vfve7/OxnP2vy3/zss8/OrFmzss8++2Srrbaab3/t27dv9rqrqqpSV1eXAQMG5KWXXspRRx1V+b7/9a9/zXvvvZck+frXvz7ftnfffffcfffdlX/vtttu+e9//7vA65+fN998M8kHPzObbrrpPOWnn356vvvd7zZ77u9///vK/3d++MMfVo7Pb4bOwjQ3W2OvvfbKv/71r9TW1mbGjBlJktdee+3/t3fnUVHV7x/A3zMwMCw6jqKgyCKipoi5/dQSTPRolBQQLpkLaJGY5RK5FOJWYSqpqalHXFDMIEST0i+WfNWUFCqUUFREWRSJRfaBYWDm8/uDc29cZgGUvmU+r3PmyNzlc+/MXDjeZ57P8+CZZ54RbCeRSHDlyhW92WTXr1/HtGnTcP36dQwaNAgxMTFaYxBCCPlno4AIIYSQJx4XEFm5cqXgJqpnz57Iz89H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",
      "text/plain": [
       "<Figure size 1280x960 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytools.show_bar(df,'课堂教学和网络教学偏好')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>课堂教学和网络教学偏好</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>一样</th>\n",
       "      <td>2.5</td>\n",
       "      <td>17.07</td>\n",
       "      <td>15.74</td>\n",
       "      <td>5.56</td>\n",
       "      <td>12.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>网络教学</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.85</td>\n",
       "      <td>5.56</td>\n",
       "      <td>1.45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>课堂教学</th>\n",
       "      <td>97.5</td>\n",
       "      <td>82.93</td>\n",
       "      <td>82.41</td>\n",
       "      <td>88.89</td>\n",
       "      <td>85.99</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级             大一     大三     大二     大四     合计\n",
       "课堂教学和网络教学偏好                                  \n",
       "一样            2.5  17.07  15.74   5.56  12.56\n",
       "网络教学          0.0   0.00   1.85   5.56   1.45\n",
       "课堂教学         97.5  82.93  82.41  88.89  85.99"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['课堂教学和网络教学偏好'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>性别</th>\n",
       "      <th>女</th>\n",
       "      <th>男</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>课堂教学和网络教学偏好</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>一样</th>\n",
       "      <td>14.91</td>\n",
       "      <td>9.68</td>\n",
       "      <td>12.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>网络教学</th>\n",
       "      <td>2.63</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>课堂教学</th>\n",
       "      <td>82.46</td>\n",
       "      <td>90.32</td>\n",
       "      <td>85.99</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "性别               女      男     合计\n",
       "课堂教学和网络教学偏好                     \n",
       "一样           14.91   9.68  12.56\n",
       "网络教学          2.63   0.00   1.45\n",
       "课堂教学         82.46  90.32  85.99"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['课堂教学和网络教学偏好'],\n",
    "        df['性别'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   从柱状图我们可以看出，大部分的学生认为自己在正常课堂上课的状态比网课好，\n",
    "同时也可以看出一小部分同学已经接受了网课教学，更喜欢网上授课。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>上网课前是否提前预习</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>偶尔会</td>\n",
       "      <td>123</td>\n",
       "      <td>59.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>不会</td>\n",
       "      <td>55</td>\n",
       "      <td>26.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>会</td>\n",
       "      <td>29</td>\n",
       "      <td>14.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  上网课前是否提前预习   个数    百分比\n",
       "0        偶尔会  123  59.42\n",
       "1         不会   55  26.57\n",
       "2          会   29  14.01\n",
       "3         总和  207  100.0"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = pd.DataFrame()\n",
    "b['上网课前是否提前预习'] = df['上网课前是否提前预习'].value_counts().index\n",
    "b['个数'] = df['上网课前是否提前预习'].value_counts().values\n",
    "b['百分比'] = df['上网课前是否提前预习'].value_counts(normalize=True).values * 100\n",
    "b['百分比'] = b['百分比'].apply(lambda x: round(x, 2))\n",
    "total_row = pd.Series({'上网课前是否提前预习':'总和','个数':b['个数'].sum(),'百分比':b['百分比'].sum()}).to_frame().T\n",
    "pd.concat([b,total_row],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEQAAANnCAYAAAA4Go01AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAB7CAAAewgFu0HU+AAB5OklEQVR4nOzdeZhXZeH//9cMMwybrCKKIO7ax9AUl0xzKVFDcikV9+SbZmaaaa7lvlauaWqhlpq7qeSCiluIa2oqqFS4giAiICIwA7P8/vA3k8QMggwweB6P65qr6X3uc879Zmr0/eSc+5TU1dXVBQAAAKBASpf1BAAAAACWNkEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKJylFkQOP/zwlJSU5O23317guEmTJuXwww9P7969U1FRkfXXXz+XXHJJamtrF7jfiy++mD322CPdunVL27Zt841vfCPDhg1rxncAAAAAfFmU1NXV1S3pk/z617/OiSeemCR56623svrqqzc67p133snWW2+d8ePHfzq5kpLUT++ggw7Kdddd1+h+w4YNy2677Za5c+fOs19JSUmGDBmSH/7wh838jgAAAIDl2RK/QuSiiy7KSSed9Lnj5s6dmwEDBmT8+PHp1q1b7r777sydOzdjxozJ1772tVx//fW59dZb59tv7Nix2XPPPTN37txsvPHGeemll1JdXZ0HH3wwnTt3zlFHHZW33nprSbw1AAAAYDm1xILIrFmzsu++++bYY49Nr169Pnf8H//4x7z22mspKSnJXXfdld122y2tWrXKeuutl7/+9a8pKyvL0UcfnZqamnn2O+mkkzJr1qz06NEjw4cPz0YbbZTS0tLsuOOOufTSSzNr1qyccMIJS+ptAgAAAMuhJRZETj/99Nxyyy3ZYost8txzz33u+KuuuipJMnDgwHzzm9+cZ9uaa66ZPfbYI++//36eeuqphtc/+OCD3HnnnUmS448/Pt26dZtnv3333Tc9e/bMfffdl8rKysV9SwAAAMCXxBILIqWlpTnrrLMycuTIrLzyygscO23atIwePTpJsvfeezc6ZsCAAUkyz0KpTz75ZMNiq3vttdd8+5SVlaV///6ZNWtWRowY8YXeBwAAAPDlU7akDnzWWWelvLx8ocaOHTu24fstt9yy0TEbbrhhkmTMmDHz7derV6/07t37c/fbcccdF2o+9eoXd21KZWVlxowZkx49eqR79+4pK1tif5wAAABQWNXV1Zk8eXKSpG/fvmnTps1iH3OJfYJf2BiSJFOmTGnYp6kn0Ky00kpJMs9je+v3W3fddZs8dmP7LaymIgsAAACwbDz33HPZbLPNFvs4S/wpMwujqqoqSdKxY8e0atWq0TFdunRJkkycOHG+/eq3Lex+AAAAQLG1iHs86iNIu3btmhzTunXrJMns2bMXe7+FNW7cuM/d/o1vfCPJp4VqlVVWWeRzAAAAAAs2ceLEbL755kmS7t27N8sxW0QQadu2bZL/xovGlJZ+ejHLrFmzFnu/hbUwjwuut8oqqyzSeAAAAGDRNdf6nS3ilpn621omTJjQ5Jhp06YlSerq6ubb77333luk/QAAAIBiaxFBZLXVVkvy6W0t77//fqNjJk2alCTp0KHDfPu99dZbTR67sf0AAACAYmsRQWTFFVdsiBvPP/98o2OeeeaZJP+NIEnSr1+/JMkbb7yRjz76aKH3AwAAAIqtRQSRJOnfv3+S5JZbbml0+/Dhw5Mkm2yyScNra6yxRtZaa61UV1fnjjvumG+fmpqaPProo/PtBwAAABRbiwkiBx98cJLk1ltvzYsvvjjPtjFjxuSuu+5KkgwcOLDR/c4+++zMmDFjnm3XXXddJkyYkLKysuy0005LZuIAAADAcqfFBJGtt946W221Vaqrq7PLLrvk/vvvT1VVVR577LF85zvfyZw5c7LWWmtl1113nWe/ww47LJ07d84777yTHXfcMa+88kpmzpyZa665JkcccUSSZL/99svKK6+8LN4WAAAA0AK1iMfu1rvxxhuzzTbb5N13380uu+wyz7Y2bdrkuuuuS3l5+Tyvd+/ePTfddFO+973v5ZlnnslGG200z/Y11lgjF1xwwRKfOwAAALD8WGpXiNTV1aWuri6rr756k2P69OmT559/PgcffHBat27d8Prmm2+eESNGZKuttmp0v+985zt55plnst122zW8Vlpamr322itPP/10unfv3lxvAwAAAPgSKKmrq6tb1pNozPTp0/Of//wn3bt3T58+fRZ6vwkTJuS9997LmmuumW7dui3BGSbjx49P7969kyTjxo1Lr169luj5AAAAoIiWxOfvFnXLzGd16tQpm2666SLv17Nnz/Ts2XMJzAgAAAD4smgxi6oCAAAALC2CCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOC0yiDzyyCMZMGBAunfvntatW6dXr17Zbrvtcu2116ampqbRfWbMmJETTzwxa621VioqKrL66qvntNNOS1VV1VKePQAAANDSldTV1dUt60l81pVXXpkjjjgi9dMqLS1NbW1tw/b+/ftn6NChadu2bcNr06ZNy7bbbptRo0YlSUpKShr2/9a3vpUHH3wwZWVlzT7X8ePHp3fv3kmScePGpVevXs1+DgAAACi6JfH5u0VdIfKvf/0rRx11VMrLyzNkyJBMnTo1c+fOzbvvvpvzzz8/ZWVlGT58eC688MJ59hs0aFBGjRqVtm3b5tprr01lZWXGjRuX/v3759FHH51vPAAAAFBsLSqI3HLLLamurs5hhx2WQw45JF26dElpaWl69+6dE044IUceeWSS5J577mnY57777svw4cOTJEOGDMngwYMbbrO5/fbb06VLl5x++umZMmXKMnlPAAAAQMvTooLIe++9lyRZZ511Gt2+2mqrJUlmz57d8NpVV12VJOnbt2/233//ecZ36tQphxxySCorK3P//fcviSkDAAAAy6EWFURWXXXVJGkyXtx7771Jkn79+jW89sQTTyRJ9t5770b3GTBgQJJk2LBhzTZPAAAAYPnWooLI/vvvn/bt2+eBBx7I4Ycfnv/85z+ZPXt2xowZk8GDB+eRRx5J27Ztc8wxxyRJJk+enOnTpydJttxyy0aPueGGGyZJxowZs3TeBAAAANDiNf+jVxbD2muvnWHDhuUHP/hBrrrqqobbYep95StfyTXXXJO+ffsmyTzrgqy77rqNHrNr164pKyvL22+/vcjzGT9+/AK3T5w4cZGPCQAAACx7LSqIJMnHH3+cysrKRre1a9dunghRVVXV8H2XLl2aPGbnzp3z4YcfpqqqKhUVFQs9l/pH+gAAAABfLi3qlpnHH388u+22W0P0WGONNbLNNts0PF/4hRdeyPe///385je/SZK0atWqYd927do1edzWrVsnmXcxVgAAAKC4WtQVIj//+c9TU1OTnj175qabbsq2226bJKmtrc2tt96an/zkJ/noo49y5pln5pBDDknbtm2TJGVlZSktbbrt1G+bNWtWOnfu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dD755JPmnWySM888MyNGjMjaa6+d3XffvdmPDwAAsCQIItCCjB07NpMnT85KK63UcGXHgvznP/9Jkmy00Ubp0qVLo2N69+7d8P3HH3/cPBP9//3973/P2WefnYqKitx2223p2LFjsx4fAABgSRFEoAV5+umnkyTdunXLvvvumz59+qRNmzZZZZVV8r3vfS/Dhg2bZ3zr1q2TJG3btm3ymJMnT24Y261bt2ab65QpU7L//vuntrY2F198cTbeeONmOzYAAMCSJohAC/LUU08lSV5//fXcfvvt6datW775zW+mVatWueuuuzJgwIAcccQRDeNXX331JMmoUaNSXV3d6DGfeOKJJMn222+fioqKZpvr4MGD895772XQoEE5/PDDm+24AAAAS4MgAi3IyJEjkyTf+c538sYbb+TFF1/M8OHD8+677+aKK65IaWlprrjiitx6661JkoEDB6aioiLTp0/P7373u/mO9/jjj+e2225LkmaNFpdeemnuueeerL322hkyZEizHRcAAGBpEUSgBfnjH/+YO+64I3fffXf69OnT8HppaWkOP/zwHH/88UmS3/72t0mSVVddNZdcckmS5IQTTsj555+fSZMm5d13382VV16Z3XffPXV1ddlwww2z6667Nssc//nPf+b4449PmzZtcvvtt2eFFVZoluMCAAAsTYIItCBbbrllvv/97zesDfK/6p8Y88ILL+TDDz9Mkvz4xz/Offfdlw022CAnnXRSVl555fTp0yc/+clPMn369CTJBRdc0CyPxP3kk08yaNCgzJkzJxdffHG+9rWvLfYxAQAAlgVBBJYjvXr1avj+zTffbPh+wIABeemll/Lee+/lueeey8iRIxue+PLd7343/fv3b5bz/+QnP8l//vOf7LPPPvnxj3/cLMcEAABYFgQRaGGqqqqa3Fb/xJgkjV7x0bNnz2y22WZ55JFH8vHHH6dNmza5+OKLm21uN9xwQ5LklltuSUlJyXxf1113XZJPF1ytfw0AAKAlEkSghRg6dGhWW221HHXUUU2Oeeyxx5J8uqbI2muv3eiYDz/8MBdeeGGS5Pjjj89aa63VbHOsqKhY4Fdp6ae/UsrKyhpeAwAAaIkEEWghVllllYwbNy633nrrPFeC1JszZ07OP//8JMl2222XLl26NHqcs846Kx9//HHWXHPNnHTSSc06x8rKygV+HXjggUmSIUOGNLwGAADQEgki0EJsvvnm2XrrrTN9+vTss88+DYumJsmkSZMyYMCAvPbaaykvL8/ZZ5/d6DFGjRqVK664Ikny+9//Pm3atFkqcwcAAFjeCCLQglx33XXp3bt3Hn300ay66qrZeOON87WvfS2rrbZaHnnkkXTu3Dm33357ttxyy0b3/+lPf5rq6urstdde2XnnnRd4rnfeeSdt2rRJmzZtGtYGAQAAKIoWH0Tq6uqy4447pqSkJNtss01qa2sbHTdjxoyceOKJWWuttVJRUZHVV189p5122gIXqISWZs0118zLL7+c4447LquuumpGjx6dd999N5tssknOOuusjB07Nrvttluj+954440ZMWJEOnbsmEsuueRzz1VXV5eqqqpUVVWlpqammd8JAABAy1ZSV1dXt6wnsSCXX355jjzyyLRv3z4vv/xyowtETps2Ldtuu21GjRqV5NOnb9S/rW9961t58MEHU1ZW1uxzGz9+fHr37p0kGTdu3DyPRAUAAACax5L4/N2irxD597//nRNOOCFJ8pvf/KbJp2UMGjQoo0aNStu2bXPttdemsrIy48aNS//+/fPoo482PHEDAAAAIGnBQaSmpiYHHXRQZs2alR122CGHH354o+Puu+++DB8+PMmnT7YYPHhwWrdunV69euX2229Ply5dcvrpp2fKlClLc/oAAABAC9Zig8h5552XZ599Nh07dsw111yTkpKSRsddddVVSZK+fftm//33n2dbp06dcsghh6SysjL333//Ep8zAAAAsHxokUHkn//8Z84888wkySWXXJLVVlutybFPPPFEkmTvvfdudPuAAQOSJMOGDWvmWQIAAADLq+ZfaXQxzZkzJwcddFDmzp2bNdZYI1OnTs3RRx+d8vLybL755tltt93SunXrJMnkyZMzffr0JGnyMaQbbrhhkmTMmDGLPJfx48cvcPvEiRMX+ZgAAADAstfigsgFF1yQ0aNHJ/k0ONx9991p165dXnnllVxwwQVZd911c9NNN6Vfv37zrAuy7rrrNnq8rl27pqysLG+//fYiz6V+BVsAAADgy6VF3TLz/vvv59xzz03y6RUfb731Vp544ok8+OCDee+99/L73/8+b775Zrbffvu8+uqrqaqqati3S5cuTR63c+fOmTZt2jzjAQAAgOJqUVeIXHHFFZk5c2bKyspy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Z85Mu3btstlmm+XUU09tdMxmm22WJJkwYUKj23/+85/nrbfeSp8+fXLRRRctsbkmn65TcuCBB2bu3LnZY489csABByzR8wEAzadsWU8AAKBe+/btc9dddy1wTH0Iad++/Xzb7r333lxzzTUpKSnJtddem44dOy6RedarX6dkxRVXzFVXXbVEzwUANC9BBABYbtTU1GTo0KFJkm9/+9vzbJs6dWrDYqabbrppnn322dx9991p3759ttlmm+y0004pLW2+i2NHjhzZsE7JzjvvnMsuuyzTpk1Ljx498t3vfjdf+9rXmu1cAEDzc8sMALDcuPbaa/Pee+8lSY4++uh5tp144ol5//33kySvv/56Hnroobz++uv5wx/+kAEDBmTLLbfMm2++2SzzmDt3bg477LDU1tYmSR555JH84x//yEsvvZSzzz47G2+8cX7wgx9k5syZzXI+AKD5CSIAwHJh4sSJOfHEE5MkgwcPzsYbb9yw7eWXX254usvuu++e9957L4899liGDx+eiRMn5tRTT81zzz2Xb37zmw3RZHFceeWVee2115Ik55xzTsaNG5cHHnggI0eOzLhx47Lrrrvm+uuvz2677Za6urrFPh8A0PwEEQCgxautrc1BBx2UqVOnNrpY6oUXXpi6urp069YtN9xwwzxrh1RUVOSMM87IHnvskQkTJuSCCy5Y7PlceOGFSZKddtopJ598clq1atWwbaWVVsott9ySnj175pFHHsl999232OcDAJqfIAIAtHinnHJKHn744VRUVOTWW29N586d59n+6KOPJkn233//hsf0/q/vfe97SZK//e1vizWXsWPH5t13302SHHbYYY2Oadu2bb7zne80y/kAgCVDEAEAWrRbb7015557bpJPb1XZYost5hszefLkJGl0W70ePXokSUPM+KLqz7W0zgcALBmCCADQYj399NMZPHhwkuSEE05o+P5/1d8i879XjnzWjBkzkjT+uN5F8dnbcZbG+QCAJUMQAQBapFdffTXf/e53M3v27Oy1114577zzmhy7wQYbJEnGjBnT5JhnnnkmSfKVr3xlsea11lprpU2bNkvtfADAkiGIAAAtzujRo/Ptb387U6ZMybbbbpsbbrghJSUlTY7fZZddkiS/+93vGn3U7XvvvZdrrrkmSfLd7353sebWpk2bfOtb30qSJiPNsGHD8o9//KNZzgcALBmCCADQokyaNCk77LBDJk2alL59+2bo0KGpqKhY4D6HH354evbsmXfeeSc777xznn322dTW1qaysjJDhw7NN7/5zUydOjXdu3fP4YcfvthzPPPMM1NaWpo77rgjP/rRj/Lmm28mSaZOnZrLLrsse+65Z5JPn0KzoHVGAIBlRxABAFqUCy64IJMmTUqSvP766+nRo0fatGnT6NeIESOSJB06dMjf/va39OrVKyNHjszXv/71lJeXp23bttl9993z1ltvpW3bthk6dOg8a4C88847Dce64YYbFnqO/fr1y5/+9KdUVFRkyJAhWWuttVJWVpZu3brlqKOOyqxZs7LOOuss0jEBgKVLEAEAWpSXXnqp4fvq6upUVVU1+VVbW9swtl+/fnn55Zdz0UUXZcstt8xKK62UsrKy9OjRI4MGDco//vGPbLnllvOcq66uruFYNTU1izTPgw46KKNGjcrxxx+fDTfcMB07dkx5eXnWXHPNHH300XnmmWfSvXv3xfqzAACWnJK6urq6ZT2J5dX48ePTu3fvJMm4cePSq1evZTyjhbf6ifct6ykAy9Db5++yrKcAAAALbUl8/naFCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4Zct6AgCwLKx+4n3LegrAMvb2+bss6ykAsAy5QgQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACgcQQQAAAAoHEEEAAAAKBxBBAAAACicFh9EamtrU11dvaynAQAAAHyJtMgg8uyzz2b33XdPt27d0qpVq5SXl2ettdbKWWedlcrKykb3mTFjRk488cSstdZaqaioyOqrr57TTjstVVVVS3n2AAAAQEtXtqwn8L+uu+66/PCHP0xNTU3atWuXr3/96/nggw/y5ptv5tRTT80DDzyQRx99NBUVFQ37TJs2Ldtuu21GjRqVJCkpKck777yTM888MyNHjsyDDz6YsrIW91YBAACAZaRFXSHy8ssv50c/+lFqampy7LHHZtKkSXn66aczduzYXH755UmSp556Kr/97W/n2W/QoEEZNWpU2rZtm2uvvTaVlZUZN25c+vfvn0cffTQXXnjhsng7AAAAQAvVooLI8ccfnzlz5uT444/PBRdckA4dOiT59IqPI444IrvttluS5Oabb27Y57777svw4cOTJEOGDMngwYPTunXr9OrVK7fffnu6dOmS008/PVOmTFn6bwgAAABokVpMEJk5c2batWuXzTbbLKeeemqjYzbbbLMkyYQJExpeu+qqq5Ikffv2zf777z/P+E6dOuWQQw5JZWVl7r///iU0cwAAAGB502KCSPv27XPXXXflueeeS/v27RsdUx9CPrv9iSeeSJLsvffeje4zYMCAJMmwYcOac7oAAADAcmy5WWm0pqYmQ4cOTZJ8+9vfTpJMnjw506dPT5JsueWWje634YYbJknGjBmzyOccP378ArdPnDhxkY8JAAAALHvLTRC59tpr89577yVJjj766CSZZ12Qddddt9H9unbtmrKysrz99tuLfM7evXsv8j4AAABAy9dibplZkIkTJ+bEE09MkgwePDgbb7xxkqSqqqphTJcuXZrcv3Pnzpk2bdo84wEAAIDiavFXiNTW1uaggw7K1KlT06dPn1x00UUN21q1atXwfbt27Zo8RuvWrZMks2fPTkVFxUKfe9y4cQvcPnHixGy++eYLfTwAAACgZWjxQeSUU07Jww8/nIqKitx6663p3Llzw7a2bdsmScrKylJa2vTFLvXbZs2aNc/+n6dXr15faM4AAABAy9aib5m59dZbc+655yZJrrzyymyxxRbzbK+/Taa6ujqTJk1q8jjTpk1LktTV1S2hmQIAAADLkxYbRJ5++ukMHjw4SXLCCSc0fP9ZXbt2bXgE71tvvdXocWbOnJmZM2cmSTp06LCEZgsAAAAsT1pkEHn11Vfz3e9+N7Nnz85ee+2V8847r8mx/fr1S5I8//zzjW5/5plnkiQdO3ZMp06dmn+yAAAAwHKnxQWR0aNH59vf/namTJmSbbfdNjfccENKSkqaHN+/f/8kyS233NLo9uHDhydJNtlkk+afLAAAALBcalFBZNKkSdlhhx0yadKk9O3bN0OHDv3cp8IceOCBKS0tzZNPPpl77rlnnm2TJ0/OkCFDkiQDBw5cYvMGAAAAli8tKohccMEFDYujvv766+nRo0fatGnT6NeIESOSJH369Mk+++yTJNlvv/1y4403Zvbs2XnhhRey0047ZerUqencuXOja5AAAAAAxdSiHrv70ksvNXxfXV2d6urqJsfW1tY2fH/55Zfntddey0svvZQDDjhgnnGlpaX54x//mK5duzb7fAEAAIDlU4u6QmT48OGpq6tbqK/tttuuYb8uXbpk5MiROeaYYxqeOpMk66+/fu6///7stddey+DdAAAAAC1Vi7pCZHG0b98+F154Yc4888yMGTMmHTt2zDrrrLOspwUAAAC0QF+aIFKvffv2DY/iBQAAAGhMi7plBgAAAGBpEEQAAACAwhFEAAAAWrjDDz88JSUlefvttxd534suuiglJSU5/fTTm31eL774YvbYY49069Ytbdu2zTe+8Y0MGzas2c8DS4IgAgAA0IL9+te/zlVXXfWF9n3hhRdy0kknNfOMPjVs2LB8/etfz913352pU6emqqoqTz/9dHbZZZdcc801S+Sc0JwEEQAAgBbqoosu+sJBY8aMGdlnn30yZ86cZp5VMnbs2Oy5556ZO3duNt5447z00kuprq7Ogw8+mM6dO+eoo47KW2+91eznheYkiAAAALQws2bNyr777ptjjz02vXr1+kLHOPzwwzN27NiUlJQ08+ySk046KbNmzUqPHj0yfPjwbLTRRiktLc2OO+6YSy+9NLNmzcoJJ5zQ7OeF5iSIAAAAtDCnn356brnllmyxxRZ57rnnFnn/P/3pT7nxxhvTrVu3DB48uFnn9sEHH+TOO+9Mkhx//PHp1q3bPNv33Xff9OzZM/fdd18qKyub9dzQnAQRAACAFqa0tDRnnXVWRo4cmZVXXnmR9v3Xv/6VI488MiUlJbnuuuvSu3fvZp3bk08+mdra2iTJXnvtNd/2srKy9O/fP7NmzcqIESOa9dzQnAQRAACAFuass87Kr371q5SVlS3SflVVVRk0aFBmzpyZ4447Lrvsskuzz23s2LFJkl69ejUZWzbccMMkyZgxY5r9/NBcBBEAAIAWpry8/Avtd+yxx+bl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lvV0YJkoW9YTgCKoqqrKZZddlpkzZ+a4447Lb37zmzz44IO54YYbFvlYP/zhD7P99tsv9Pjf/e53efbZZ/PSSy9lq622yjrrrLPI51wcxxxzTO67775861vfyr333pu2bdsu1fMDy7f6mFFSUtLo9tra2sydOzdJUlFR0eRx5s6dm9ra2i80h1GjRuWUU05JkkyYMCFt2rT5QscBaCk++eSTHHjggamrq8v06dO/8O9HWN4JIrAUPProo5k5c2ZWWGGFnHzyyUmSd999NzfeeOMiH2unnXZa6LGTJ0/Or3/96yTJySefvNRjyJAhQ3LfffclST788MO0atVqqZ4fWD7dc889KSkpSevWrdO6desFjj3qqKNy2WWX5f/+7/8yatSolJY2ffFrdXX1Il8pN2XKlOy5556prKxMz549M2HChOy666556qmnssIKKyzSsQBagtra2gwePDj//ve/s9JKK2XKlCk59NBDs8EGG6Rv377LenqwVLllBpaCO++8M0kyePDgdO7cOcl//yZzt912S11dXcPXn/70pyTJeeedN8/r22677Tz7LYxTTjkl06dPz7rrrpsTTjihGd/R53v22Wfzs5/9LEnSs2fPvPLKK/nRj360VOcALJ9WWGGFdOjQ4XNjyOuvv54rr7wySXL22WcvMIYkSVlZ2SJFjJkzZ2aXXXbJv//972y55ZYZM2ZMvv/972f06NHZb7/9rCcCLJd+9rOf5Y477kj37t3z97//PRdffHE++eST7Lrrrpk0adKynh4sVYIILGHTpk3LTTfdlCQ57LDDGl7/oldLlJUt3IVdL774YoYMGZIkueKKKxYppCyuf/3rXxk4cGBmz56dI488MqNGjcraa6+d6667ruGKFYDFdfTRR6e6ujrf/OY3s8ceezTrsT/++OPstNNOefbZZ/O1r30t999/f1ZYYYVcf/312XjjjXPvvfdml112yfTp05v1vABLSl1dXX72s5/l8ssvT+fOnfPQQw9l/fXXz5FHHpkf/ehHefvtt7Plllsu9fXuYFlyywwsYVdffXVmzZqVjTbaKP/3f//X8Hr932Q+/PDDWXvttRtenzFjRpLkggsuyNVXX93w+nvvvTfPfgsyd+7c/PCHP2y4H3SXXXZZrPfwxBNPZLPNNluosa+++mp22GGHfPjhhxk8eHAuvfTSlJSU5J577snXv/71nHjiifnoo49y7rnnNrkmAMDnufbaa/PQQw8lSX7+858367Hff//9fPe7383zzz+fjTbaKA899FDD1X3t2rXLvffemx133DEPPfRQttxyy9x7771Zc801m3UOAM1p7ty5Oeyww/KnP/0pXbp0ybBhw/K1r32tYfvll1+ejz76KLfddlu23HLL3HbbbYt0mzYsr1whAktQTU1Nfv/73ydJw79M16uPATNnzswbb7zR8PXBBx8k+fS+9c++XllZudDnPe200/LSSy81/Peqqqov/NW3b9+FjiFPP/10tttuu7z//vs58MADM2TIkIb3uf766+dvf/tbOnXqlPPPPz/f//73M2vWrIV+TwD1xo0bN08Eac7Fml988cVsttlmef7557P99ttnxIgR6d69+zxjevbsmSeeeCJbb711Xn/99WyyySa57LLLUlNT02zzAGguH374YXbYYYf86U9/Su/evTNy5MhsscUW84wpLy/PzTffnKOOOioff/xxBgwYkJ/+9Kf56KOPls2kYSkRRGAJ+stf/pJ33nmn0W11dXVJFn0Nkc9zxx135Pzzz0+SXHzxxfMcY2G/Jk6c2PAUhaOOOmqhznvDDTdk++23z4cffphjjz0211133Xy3BW2zzTYZMWJEevbsmbvuuitf+9rX8uCDDy7U8QGSZM6cOdlnn33y8ccfz7dt7ty52XPPPfP0008v8nFra2tzwQUX5Bvf+EbGjx+fvfbaK8OGDUvHjh0bHd+lS5cMHz48BxxwQKZPn56jjjoqm266aZ566qlFPjfAkjJs2LBstNFGGTFiRDbYYIM89dRT81yx/FmlpaW59NJLc+GFF6ZVq1b5/e9/n/XWWy/XX399w7+3wpeNIAJLyJw5c3LmmWc2uf2L/oNlQY9Fe/DBB3PAAQekrq4uhx12WI4++uj5xsyYMSNjx47N2LFjm1wQ8NJLL01lZWV69OiRQYMGLXA+06dPz8EHH5yDDjooc+bMyQUXXJALLrigydthNtxwwzz99NPp169f/vOf/2TnnXfOnnvumXfffXeB5wFIkiOOOCJPPfVUevXqNd+Vd2eccUb++te/pn///hk+fPhCH/Opp57KVlttleOOOy7V1dU5+eSTc/XVV6dVq1ZN/q6ura1NaWlpLrvsslxzzTXp1q1bw+PNt91229xxxx0WXQWWmXfffTcHHnhgBgwYkAkTJmS33XbLsGHDstJKKzX575J1dXWZO3duDj300Dz44IPp27dvPvjgg/zgBz/Iuuuum0svvdS6SXzpCCKwhPzud7/Lm2++mfLy8ka3f9F/UW5qvxtuuCG77rprqqqqstNOO+Xyyy9vdNzf/va3rLPOOllnnXUyefLk+bZ//PHHDU9tOPzww5t8ykNdXV3+8pe/5Ktf/Wquu+66dOvWLX/5y19y+OGHL/C91dTUZKWVVsq9996bE044IWVlZfnrX/+atddeO/vtt98X+ptdoBjOPvvsXH311amoqMhf//rXtG/ffp7txx13XPr165eZM2dm4MCBueuuu5o8Vl1dXYYPH55dd901W221VZ555pmsvPLKeeSRR1JVVZVOnTqlvLw8paWlKSkpme+rVatWqaioSJcuXTJhwoSMHj06e+65Z5JkxIgR2WuvvbLeeutl6tSpS/TPBOCzXn311RxxxBFZb7318pe//CWtW7fO7373uxxyyCFZbbXVUlFRkVatWjX6e620tDStW7dOx44dc8455+Qf//hHTj755LRp0yZjx47N0UcfnVVXXTUjR45c1m8Tmo1FVWEJeOedd3LGGWck+fSWkwsvvHC+MXPmzEmSDB06tNGrKU466aScdNJJTe73v2bOnJmSkpJsu+22ueuuu5p8Gk39rTD/+329Tz75JIcddlhuv/32HH744fNtr6yszK233pqLL744L7/8cpJkiy22yG233Zbvfe972X///Rs9b2OeeOKJfP/738+Pf/zjvPjii7n55ptz8803Z/fdd1/gBxmgeM4777yccsopSZIrr7wym2+++XxjOnXqlAcffDDbbbddRo8enb333js33HBD9tlnn/nGfvTRRznvvPPy2GOPJUn222+/XHLJJenevXueffbZbLzxxmnbtm3Kysoa/R1dU1OTmpqazJw5M926dcvKK6+c22+/veEDxMMPP5xf/epX6dq1azP/SQA0rra2Ntdee22uuOKKJMlmm22WIUOGZKONNsrjjz+evn37pkOHDmnVqlWjTzusra1NTU1NZs+e3RBPzjnnnPzkJz/JmWeemWuvvTbf//73s/XWWy/ttwZLTEmdG8Kg2e2www555JFHMnDgwJx22mnZbLPNsu222+bxxx9vGHP99dc3ekvNjBkz8sEHH6Rbt27zXQ6eJOecc06Tt7E89NBD+cY3vpEOHTo0Obf77rsvAwcOTJLMnj270SiyIKNHj86AAQMybty4VFRU5Fe/+lVOOOGElJeXZ6+99srbb7+d1q1bN/ohoq6uLjU1Namurs4nn3yS6667Lv369UtdXV1uv/32nHrqqXnnnXfy4osv5itf+coizQv4cqqtrc1xxx2Xiy66KEny29/+Nr/4xS+SJL169cp7772XYcOGZeedd27Y5/3338/WW2+dN954I6WlpbnuuutywAEHzHfsmTNnZtCgQfnpT386z/7N4R//+MdCL0gN0Jx++tOfZq211srPfvazhXo64cJ644030rVr13Tp0qXZjgnLmiACS8B//vOf7LHHHnn44Yczfvz4RoNIU/785z9n8ODBOe+883LiiScu1jz++c9/Zp111pknkDz88MPp379/kk8XIPzslST198R/nldffTXHHXdcLrnkkqy77rqLNcfPqqmpySuvvJKNN9642Y4JLL9mzJiRgw46KHfffXeS5Mwzz2y4SiRpOogkyVtvvZWtt946EyZMSKtWrXLTTTdl7733XprTBwBaOGuIwBKwzjrr5MUXX8zKK6+8zOZQWVmZvffeO9ttt13eeOONzx3/wgsvZMMNN8zbb7/9uWM32GCD3H///c0aQ5KkVatWYgiQJBk1alS22GKL3H333Q2Ll342hnyeNdZYIw899FA6d+6cmpqa7L///g1h5bPmzp2bSZMmZerUqZkxY0YqKysXuHh1Y2pra1NVVZUZM2Zk6tSpmTRpUpO3NwIsDe+//36mTJmSjz/+OLNnz17ktevq6uoyZ86czJw5M9OmTcsHH3yQGTNmLKHZwrIjiMAS0tRipK+//nqjC1nVfw0ePDjJp2uILGjcW2+9tcDzn3vuuRk7dmxeeOGF3HHHHQscW1VVlV133TWvvvpqdt1113zyySef+/4++eSTfPDBB5k2bVpmzpyZOXPmLPKTc+rvU/34448zZcqUTJw4cZH2B758Zs2albPOOiubbrppXn/99bRr1y533nlnfvrTny7ysTbYYIPcfffdqaioSHV1dQYNGtSwZki9F154ISuvvHK6deuWjh07pm3btk0uONjUV6tWrdKmTZt07NixYT0Rj98FlqXVV189K664Yjp16pR27dqlvLx8kX6vlZaWpqKiIh06dEjXrl3To0ePRtfEg+WdRVVhKWvbtm2SpKysLH369Jlv++etIfL222+npqZmgeuEPPPMMzn//POTJPvuu29OOOGEBc6poqIi119/fXbeeeeMGjUqBxxwQO66664mH52bJJdffnmji74uLnfxQbG9+OKL+fWvf505c+bkK1/5Sm699db07dv3Cx9v2223zbXXXpv9998/m2++efr16zfP9rZt2+arX/1q2rRpkzZt2qRVq1YpLS2d5/bBF154Ieuvv/58T7WpV1NTk9ra2tTW1qaysjKVlZVNjgVYGjbYYIMkaYi8paWl8yyk+uabb6Z169bp1atXo/vX/06rvwKusrIy3bt3Xypzh6VJEIGlrP7KkVVXXTVjx46db3v9GiK/+MUvGtYQmTlzZsO/XK+88sqZNGlSk1egTJ06NYMGDcrcuXPTt2/fXH311Qs1r29/+9u56KKLctRRR2Xo0KH55S9/mXPPPbfJ8SuuuGI23HDDtGnTJhUVFQ3/oK2PKLW1tXn66aez1VZbNXmM+qc01NTUpLKyMlVVVQs1V+DLa+utt86QIUPy0EMP5fLLL2+WsLDffvulpqYm3//+99OuXbt5tm200UYZNWpUk/v+9a9/zd57751Zs2ZlyJAh+epXv7rY8wFY0l544YUmt/373//O1ltvnZqampx//vnZfffdl97EoIURRGApa+pxuI2prq7OnnvumTFjxmT06NHz7NvY49Lq75N/991307lz59x5553z/cv/ghx55JF5/vnnc/311+e8887LV7/61ey3336Njj3kkENyyCGHNHmsn/3sZ3nsscfSpUuX/OEPf/DoSWCh7bvvvtl3332b9ZgHHnjgIu9z22235YADDkhtbW169eqVHj16NGwbNWpUw+/KRfm9DrAsvfrqq9lxxx0zefLkrLPOOvNcrTxt2rSccsopOeWUU+b5fQdfZtYQgaVsQbehfNb48eNz55135rXXXsu//vWvXHPNNZ+7z09+8pM88MADKS0tzY033pi11157ked35ZVXNlxm+cMf/jDPPffcIu1fV1eXn//85/nd736XkpKSrLXWWllhhRUatt922235wx/+sMjzAliaLr300uy7776pq6vL+eefn3vvvbfhcvHKysrsscceueCCCzJw4MCFWncJYFkbMWJEttlmm0yYMCH77LNPXnzxxXkWs//pT3+a3//+99lyyy3z73//exnOFJaiOmCJ+sc//lGXpG7bbbetq6urq5s8eXJdkro+ffrU1dbW1v3gBz+o+9a3vlW38cYb162++up17du3r0sy31fPnj3rZs2aVdejR4+6JHUzZsyY5zw///nPG8ZecMEFTc5n+PDhDePmzp3b6JjXX3+9YR6rrLJK3fjx4xfqvVZVVdXtt99+dUnqVlxxxbphw4bNs3306NF15eXldUnqfvnLXy7UMQGa0rNnz7ok8/2uWRyVlZV1hx56aF2SulVXXbXuiSeeaHTcu+++W7fJJpvUJanbZJNN6iZOnNhscwBobldddVVd69at6yoqKuquvPLKRsfMnj277sADD6xLUtetW7e6p556ainPEpY+V4jAUlb3mUVDS0pKUl5enkcffTT//Oc/M378+PTu3Tt77LFHTj755Fx//fV59tlns9dee2XSpEl56KGHGj3mSSedlIsvvjhJ8uMf/zjHHnvsYs1x/fXXz+WXX54kmThxYnbdddfPXd9jwoQJ2W677XLTTTdlq622yj//+c/svPPO84zZYIMNMnz48Ky44oo555xz8oMf/GCRHwMHUK+mpmae/1xcTz/9dDbddNMMGTIkO+ywQ/75z39m6623bnRs79698/jjj2fbbbfNiy++mK233jpvvvlms8wDoLmMGzcue+yxR3784x9n1VVXzVNPPZUf//jHjY5t06ZNrr/++hxzzDGZMmVKdthhhwwbNmwpzxiWrpK6Oo90gCXpueeeyxZbbJFtt902jz/+eCZNmpSVV145ffr0ydtvv53//Oc/eeaZZ/K1r30t6623XqOLpb722mtp06ZN1lxzzYZFVWfMmNHwpJnJkydn5513Tq9evXLnnXc2ur5IvXvvvTff/e53U1JSkpqamgXewrP//vvn7rvvzpAhQ5pcS6Suri433HBDfv7zn2fq1Kk55phj8utf/3qB99S//vrr2WGHHTJhwoQMGDAgd9xxR8PTdwAW1oorrpgpU6bk7rvvzm677faFjzN37tzssssuGT58eJKkXbt2GThwYObMmZPKysrMnj274WvWrFmZOXNmPvnkk8ycOXOeyL3KKqvkkUceyVe+8pXFfm8Ai6v+L8zq/1Jrl112SZs2bTJ79uxUVlZm1qxZ8/xeq//d9tnIXF5enr/85S/Ze++9l9XbgCXKKmCwhNXW1ib5799g/u8VEeuss07WWWedBR7jK1/5SubOnZsXXngh06dPn2979+7dM3To0HTr1m2BMaSmpiZDhw5t2Ofz1jO56qqr8vOf/zybbrppo9tfe+217LXXXnnttdeSJKuttlree++9fP/735/nQ8SsWbPm+RAxe/bshmPcf//92XHHHXP//ffPs9YIwOeprKyc5z+/qPLy8obf1Ukya9as3HbbbfOMqaioSKdOndKpU6esuuqq6dSpU1ZYYYWssMIK6dChQ/72t79lwoQJ2XbbbfPYY481rMUEsKy0b99+nit877vvvnm2l5WVpWPHjunUqVO6d++etdZaq+F3W4cOHfLyyy/nueeea3hSV3Mvdg0tgSACS9j/hpA5c+Ys8jH+85//5P/+7/8ajlV/q81nNfUc+bq6umyzzTYZO3Zspk2b1vAPxh133PFzz7vCCis0GUOSZPXVV8+4ceMa/vu7776bd999d54x7du3b/iH7UorrTTPh4jWrVvnz3/+c0aOHJn+/ftn+PDhogiw0JoriCTJUUcdlT59+mTddddNnz590qNHj/To0SNdunRJ165dU1FRscD9f/rTn2aLLbbIV7/61SZ/HwMsTQceeGBeeeWVbLDBBll99dWzyiqrpEePHunatWu6dOnScKVxUz755JNsueWWmT59ejbccMOlNGtYugQRWMLqA8TcuXOTfPo3j4tq3XXXzcCBAxuu7thmm20+91/O65WUlGTPPffM0Ucf3fDadtttl9/+9reLPI//1a5du5x44ol5//33s9Zaa6V3797p0aNHunfvni5duqRLly6f+zjKb3zjGxk8eHC23nrrz/0HM8BnNecaRLvuumt23XXXL7z/BhtskAceeCCbb755o7c+Aixtffr0me9qt0XRoUOH/PWvf027du2EXr60BBFYwupvD6kPIRtssEG+yNI9O+64Y6ZMmZJ99tkngwcPXqR9d99994waNSpf+9rX0r9//6y33nqLfP6mnHzyyYu1/8EHH5zVVlst3/rWt5ppRgDLRlMLsAIsr9Zdd91lPQVYoiyqCgAAABSOx+4CAAAAhSOIAAAAAIUjiAAAAACFI4gAAAAAhSOIAAAAAIUjiAAAAACFI4gAAAAAhSOIAAAAAIUjiAAAAACFI4gAAAAAhSOIAABfyF133ZU5c+YscExdXV1uvfXWVFdXL6VZsTD87ABAEAGgwD755JO8/fbbefvtt1NTU7Osp7NIJk+enB//+MeZPXv2PK+/+OKLWX/99Rf567bbblvoc8+dOzfbbLNNvve97+X4449f4Ngnn3wy++yzT3r27Jm77777i7zVL6UTTjgh2223Xa6++uqlel4/OwD4r7JlPQEAWFbuuuuuHHTQQUmS999/Pz169PhCxxkwYED+/e9/N+fUGgwbNizrrLPOPK9NmzYtG264Yd5///106tQpv/71rxu21dXV5V//+tcin6eysnKhx5aXl2e33XbLE088kUsvvTQDBgzIjjvu2OjYK664IknSp0+fDBw4cJHmNHHixGy//faLtM9ntW7dOq+88soCx1RXV6eqqirt2rVLSUnJFz7XZ9XW1mbOnDlp06ZNk2Peeuut/P3vf89OO+0037Zf/OIXufDCCxf6fJtvvnmeffbZhRq7tH52C/Lee++luro6bdu2TVlZWUpLG//7ubq6ulRVVaWysjKlpaVZbbXVGh03a9aszJo1KxUVFSkvL095eXlatWrVbPMF4MtLEAGgsNq3b9/w/YI+vH6eGTNm5I033miOKc2nY8eO873WpUuXHHjggfntb3+biy66KAceeGC++tWvJkkqKiqSJN26dcuHH37YsM/VV1+dQw89ND/72c9yySWXNLy+3Xbb5e9//3tat269SPP6+c9/nr/+9a95+umnc9xxx6V///7zBYU333wzt912W1q1apU//vGPKStbtH/tKC8v/0Jxp17nzp0/d8zIkSMboktZWdlif5CuqalJdXV19t9///zlL39pclz9n3djf+5t27ZN8unPuWvXrk0eY/bs2ZkwYULatWu3SHNcEj+7Dz74IOutt14qKioavhoLHY888kiOOOKIDB06dJHmvO222+bxxx9vdNtNN92UQw89dJGO15STTz4555xzTrMcC4CWTxABoLA++2F0cYJIly5dkiS//OUvc/bZZy/2vMaMGZOvfOUrSZIOHTo0OuaMM87IzTffnPHjx+fII4/MY489liRf+AP9osaK0tLS/Pa3v829996b4447rtGrK84666zU1NTk8MMPz8Ybb7zIc6qPO8mnV1SsvvrqC7Xfww8/nP79+8+zf1NKSkrSunXrtGvXLq1bt06rVq0a/SBfVVXVEJjKysrmu5qorq4uc+bMSVVVVaqqqpq86qFe/Z93Yz+v+v8tHnXUUTn99NObPMbjjz+e7bfffpFj1pL42dXW1mbGjBmZM2dOw59D/XucNm1aZs2a1TBugw02yMyZMxvCSXl5eUaMGJGJEydm4403zrrrrpvk0z/TysrKVFZWNvz/YWHfX2lp6SL9f6GqqipJvvBVYgAsnwQRAArrsxFgYT48N2VhYkptbe0CPyTX1dU1+sG0qQ+7bdu2zamnnpof/ehHeeKJJzJq1Kj07du3WYPIfvvtl4ceeijl5eVp3bp1QzD4X3fddVejxxw7dmyS5L777sv6668/z7aamppUVVXlk08+ydSpUxvdf3Gv1liYyLPttts2fBhuypw5c7LzzjvnscceS6tWrXLjjTdm7733Xqy5Lciivu+W8LNbeeWVG1189Y033simm26aWbNm5dJLL03v3r0bvQJj++23z8SJE3Paaadlt912+/w3/RkHHnhg9t5777Rp02aR41C9FVdcMVOmTFngFTkAfPkIIgCwmBbmQ9gvf/nLPP3009l3330zePDg+fY5/PDD07Fjx5x44onzvL6gdS1+8IMf5Oabb87FF1+cvn37JklDdJkyZUqj+1566aW59NJLP3e+yadrM0yZMmWhxi7Iu++++4X2+2xAWmONNRZ7Hl9EVVVVBg0a1HAFzq9//eslGkOS/77vM844I2ecccbnjm/s57wsf3YzZ85M+/btM3fu3AwaNCgfffRRzjnnnBx11FFN7jNhwoQkyYYbbrjI56u/0mRx1EexFVZYYbGOA8DyRRABgGY0atSoXHLJJenbt2+OPvrohtefe+65/P3vf0+SHHbYYfPt9/jjj+df//pXJkyYkF/96lcLda7WrVvn0Ucfnee12traJJ9eZbD22ms3vD59+vS8//776dKlS1ZaaaWG19999935nlRT77zzzsv555+f7t27p02bNqmoqFjkW2saU1tbm9mzZ2f69OkZP378AsfV69Onz0Kfu35tjbq6usWa5+TJk7PXXns1/NySZIMNNmj4/v3338/KK6+80Mfbb7/90q5du5SXlzcsgnrHHXdk9OjRmT17djbaaKMcf/zxDYFjYdcQacyy+tmNGzcuW221VX74wx9m7ty5eeGFF7Lnnnvm5JNPbvKYNTU1efvtt9OhQ4eFvi2qMXV1dfl//+//ZZdddsmee+65SPvWP4J4UddjAWD5JogAQDN65JFHcu2116Zr164ZPHhwOnXqlOrq6jz33HNJPl20ceLEibnhhhsaHnv6wQcfNCweuqC/RV8Y9RGhc+fOGTNmTMPr9YuqHnTQQY0uqtqYRVm3YVGUlpamffv2ad++fXr27NnkuM8+Cvnxxx9f5DVEFudRyk8++WT222+/Jq+QmDlzZvr27ZtNN900Z599dvr16/e5x7ztttvmm9OTTz6ZJ598suGYyX/f98KuIdJY+FlWP7sPPvggdXV1DfPu3bt3hgwZMt+4Sy+9NP/4xz+SfPqEo/qn8hx44IHzjV133XVz6qmnfu7cLr744vz5z3/On//852y//fa54oor5rvdpzH1678k/13QFoBiEEQAIE0/drb+Ear1i2WuuOKKC/xb5J/97Ge56667MmLEiPzmN7/JOeeck2effTaffPJJevfunTXXXDNrrrlmKisrs9FGG2WnnXZquB1jvfXWy+abbz5PyPisGTNmpLS0dIGPiP3sVRWLYkH7zZ49O6+++upCHWfTTTdd4Pbvfve7mT17ds4///zPHbs4QeOL7j9r1qycdtppueiiixr+TPbZZ5/ccsst84w7//zz8+GHH+aBBx7IAw88kN122y1nnHFGNtpooyaPPXLkyLRv3z7l5eX55S9/mTvvvDMnn3xy9tlnn8yePbthAd1FnXdja3fUW9o/u379+uXFF19suM1ozTXXTHl5+Xzjnn766dx6663zvPbxxx/nxhtvnG/s9ttvv1BBZPfdd89jjz2We++9N4899lg22mij/OIXv8ipp566wFtq6mNIsnhrCQGw/BFEACAL/zfD99xzTwYOHNjk9pKSkvzxj39M3759c9FFF+VHP/pRHnnkkSTJnnvumbXXXjs/+MEP8oc//CGnnXZadtppp4bbXj5vbYpDDz204UPkZz+43XnnnRkwYECSBX84XpAF7ffmm29ms802+9xjlJWVZe7cuQsc8+STT2batGkNV0MsyGcj1XbbbbdIt8z87/4L484778wxxxyTd955J8mnj2W+7LLL0r9///mCyNFHH51Zs2bliiuuSGVlZYYOHZq//e1v2XvvvXPWWWdlnXXWme/4X//61xu+r1+ronv37g3rv/zv/Bd2DZHPfqD/X8viZ9e9e/c88MADOeiggzJt2rR88skn8zziOvnvQsR/+tOfcvDBBzd6nAceeCDf+c53FvoJUGuuuWbuueeeDB06ND/5yU8yYcKEnHvuubnzzjvz5z//OVtssUWj+312Ud3FedoUAMsfQQQAmtl6662Xo446KhdeeGGOO+64vPfee0mSQYMGJfl0fYe//vWvefbZZ/O3v/0tw4cPT5LstddeC32O6urqhisJPhsK6iPAoi6quqAP1Z9dALb+PXzWjBkzcv/9989z5cwNN9yQgw46KGuttVbDE0uS/37gXJi1Gj4bNOojxaJY2CDy0EMP5bTTTsszzzzT8Np3vvOdXHHFFVl99dUbXSujW7duufDCC3P00Ufn9NNPz3XXXZeamprceuut+etf/5ojjjgiZ5xxRjp16rTI8+7YsWPWW2+9hR7fvXv3JrctrZ/dLbfckltuuaXhMbrJp+vYrLjiijn22GPnGXvqqac2GiB79uyZ8vLy/OEPf8jOO+8833kX1m677ZbtttsuP//5z/OnP/0pY8aMydZbb53HHnssW2+99XzjP/u/fUEEoFgEEQBImvzb8erq6oZbZubMmbPQj+U89dRTc9111+X2229PaWlp1lxzzYa/oe7SpUtOOeWU/OxnP8vhhx+eCRMm5Ctf+cp8Vwr8ryFDhmTIkCFp27ZtysrKGtb/+OyH3tLS0qy11lrz7fvxxx9n8uTJ6dSpU1ZcccX5tjd2W0O9z16N8r9XSiTJmDFjcv/9989zjI4dOyaZ/6kd9XNd0Pnqrb766ou9MGpTqqqq8sc//jFXX311XnnllYbX11tvvVxwwQULvAros3r37p1rrrkmxxxzTI488sg89thjqa6uzqWXXpqbb745r7zySnr06PG5x6msrGz4MH788cc3rC+zuJbWz27s2LEZOnTo586nVatWueKKKxp9BPC0adNSWVmZddddd57XF/S46qZ06tQp1157bXbaaaf88Ic/zBZbbJFvfOMbjY51hQhAcS36P2EA4EuorKys0a82bdqkY8eO6d69e1ZdddWFvrWmY8eOOeWUU5J8uj7HPvvsM8/2H//4x1lttdUanhKy7777fu4xV1hhhaywwgrz3Try2Q+9m266acaOHTvf17nnnpskOfjggxvd3tjVA40df0E+O6/67xcmfNSrq6vLBx98kE8++SRz585tlhhSV1eXuXPn5pNPPsnkyZMbrqqpqKjIP//5z4YYssoqq+TKK6/M6NGjFzqGfNYGG2yQRx99NLfcckvDU3y22GKLhYohQ4cOzYYbbpjKysp88MEH+eijjzJr1qyFuv2prq4us2fPzrRp0/Lhhx/Ot31p/eyOPvrofPjhh5k1a1Zqa2tz5ZVXJkmOPfbY1NXV5aWXXkqS9O3btyG4/K+5c+emVatW6dOnz0Kf9/MMGjQoTz75ZG666aYmw4ogAlBcrhABgCXkoIMOyjHHHJOampqsscYa82xr3bp1jjvuuBx55JFJssiPCf2s+g+uU6ZMSZs2bVJeXp5WrVqltLS0ycVX69XW1qampqbhSpiysrL51nv47N/mX3311fMd4/3335/vtfp9FuVv92fOnLlQAWFxvPXWWw1Pq/nd736X0aNHZ//9989hhx3WLB+GBw0alP79++eEE05YqMcnn3feefnggw9SWlqae+6553PXkVmQDTbYIKNHj57ntaX1s+vQoUPDorCNGTFiRJI0estK8ulitjU1NVlllVUavXpkcTS20O0rr7ySDTfcMIkgAlBkgggALCFXX311wxUJp512WgYNGjTPbQhvvPFGw/ePPPLIYj8qddVVV53nw11jmlpDpN5ZZ521wA/yhx566Bee3+cpLS3Neuutl9atW6eioiIVFRULXEi1/nHBW221VZPj6oNPZWVlZs+ePc9VDx06dGh4HHJz6tq1a6OPmq2trc0//vGP3HDDDbn77ruTJJMnT86ee+6ZM844IxMmTMj666+f1q1bN/wZ1L+vt99+O++8805WXXXVrL322g3HrL9CpLKy8nOvrFiSP7vPM3Xq1PTu3TvbbLNNo9unT5+eJEs0iNXU1OTuu+/OpZdemieeeCKzZs1K27ZtBRGAAhNEAGAJmD17di644IIkn37ImzBhQs4666z85je/SZK8++67ueqqqxrGn3vuufnhD3+40LfkNKZr164pKSlJ69at57lC5MMPP8zUqVMbxvXo0SOdOnVKXV1damtrU1tb23CFyOd9IKx/RPBnvfvuu/nBD37wheddr127dvM9cnjq1Kl58803s/HGG8935UD91S/33ntvOnfuvFjnnj179kIt9Pqd73xngdv//ve/N/qh/6677sohhxySqVOnpqSkpCGMnX32/9fe/cdEXf9xAH/ecShkccCYAUI5aW4KkZqeWkMBrQSlBmWCxNRkwEG/dOD8EQMjUxNDGGP9cKaZPyETEkcaTktCNtRpECyDIVp48UMBFeSA9/cPdp88uDs4QPrqPR/bTe/z4/15n+8/3D3v/X69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3vnm5mbh7e0ttRUeHi5u3rxp8t9r69atAoDw8PAQjY2NJq8diNraWiGTyYSVlZVwc3MT8+bNE+vXrxd//vnnkNsmIqKHD2eIEBHRI8fBwQEODg4PrH0nJye99w0NDUNu8+mnn8bChQtRVVWF5557DiqVqs+v/b3Z2dnpFWa1tbXtM7tDR1fzxFDtk/4Y+3zLli3Dt99+C09PT8yZMwfh4eEGr/Pz88PChQthZ2cHb29vhIaGGqyX4uLigtLSUqSkpGDlypUYO3as0T7JZDLMnDkTM2fONPvzGNLe3j7oGiLOzs4DvnfNmjW4d+8epkyZgunTp0Mmk+G9996DUqnEP//8g4SEBIPtx8XFIS4uzuy+jdTYAT1jcv36daN9sbOzw+nTp/Hhhx8iODgY8+fP77f/a9asgbu7O/z9/eHo6Njv9f1xd3dHY2MjlErl/8WuQkRE9N+SicH+709ERERERERE9JBiNE5EREREREREFoeBCBERERERERFZHAYiRERERERERGRxGIgQERERERERkcVhIEJEREREREREFoeBCBERERERERFZHAYiRERERERERGRxGIgQERERERERkcVhIEJEREREREREFoeBCBERERERERFZHAYiRERERERERGRxGIgQERERERERkcVhIEJEREREREREFoeBCBERERERERFZHAYiRERERERERGRxGIgQERERERERkcVhIEJEREREREREFoeBCBERERERERFZnP8BQvSg1FYN1cUAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1280x960 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytools.show_bar(df,'上网课前是否提前预习')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>上网课前是否提前预习</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不会</th>\n",
       "      <td>22.5</td>\n",
       "      <td>24.39</td>\n",
       "      <td>31.48</td>\n",
       "      <td>11.11</td>\n",
       "      <td>26.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会</th>\n",
       "      <td>10.0</td>\n",
       "      <td>29.27</td>\n",
       "      <td>9.26</td>\n",
       "      <td>16.67</td>\n",
       "      <td>14.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>偶尔会</th>\n",
       "      <td>67.5</td>\n",
       "      <td>46.34</td>\n",
       "      <td>59.26</td>\n",
       "      <td>72.22</td>\n",
       "      <td>59.42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级            大一     大三     大二     大四     合计\n",
       "上网课前是否提前预习                                  \n",
       "不会          22.5  24.39  31.48  11.11  26.57\n",
       "会           10.0  29.27   9.26  16.67  14.01\n",
       "偶尔会         67.5  46.34  59.26  72.22  59.42"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['上网课前是否提前预习'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>性别</th>\n",
       "      <th>女</th>\n",
       "      <th>男</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>上网课前是否提前预习</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不会</th>\n",
       "      <td>26.32</td>\n",
       "      <td>26.88</td>\n",
       "      <td>26.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会</th>\n",
       "      <td>10.53</td>\n",
       "      <td>18.28</td>\n",
       "      <td>14.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>偶尔会</th>\n",
       "      <td>63.16</td>\n",
       "      <td>54.84</td>\n",
       "      <td>59.42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "性别              女      男     合计\n",
       "上网课前是否提前预习                     \n",
       "不会          26.32  26.88  26.57\n",
       "会           10.53  18.28  14.01\n",
       "偶尔会         63.16  54.84  59.42"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['上网课前是否提前预习'],\n",
    "        df['性别'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由以上数据可知，上课前大部分学生只是偶尔会进行预习，一少部分同学根本不会进行预习，只有极少数的学生会进行预习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '提交答卷时间', '所用时间', '来自IP', '性别', '年级', '网课数量多少', '上网课是否会分心',\n",
       "       '课堂教学和网络教学偏好', '上网课前是否提前预习', '有疑问是否会向老师请教', '是否会参与讨论', '线上学习的气氛',\n",
       "       '作业完成情况', '11、您认为影响线上学习的因素有哪些？', '12、您认为线上学习中教师教学存在的问题是？', '线上学习效率',\n",
       "       '填写问卷时长'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>有疑问是否会向老师请教</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>会</td>\n",
       "      <td>110</td>\n",
       "      <td>53.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>不会</td>\n",
       "      <td>97</td>\n",
       "      <td>46.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  有疑问是否会向老师请教   个数    百分比\n",
       "0           会  110  53.14\n",
       "1          不会   97  46.86\n",
       "2          总和  207  100.0"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = pd.DataFrame()\n",
    "b['有疑问是否会向老师请教'] = df['有疑问是否会向老师请教'].value_counts().index\n",
    "b['个数'] = df['有疑问是否会向老师请教'].value_counts().values\n",
    "b['百分比'] = df['有疑问是否会向老师请教'].value_counts(normalize=True).values * 100\n",
    "b['百分比'] = b['百分比'].apply(lambda x: round(x, 2))\n",
    "total_row = pd.Series({'有疑问是否会向老师请教':'总和','个数':b['个数'].sum(),'百分比':b['百分比'].sum()}).to_frame().T\n",
    "pd.concat([b,total_row],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEQAAANmCAYAAADzRl6QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAB7CAAAewgFu0HU+AABxyklEQVR4nOzdeZxe4+H///csWSaJrIglIWrtB7VHY1eCRmqpfS2f4kPtbS1Vai3aoqpqS+20lBa1i11saWylpIogkYhIImKSmcxk7t8ffnN/pZmQMEkmzvP5eMzDuM91zrnuEeR+5ZzrVJRKpVIAAAAACqRyYU8AAAAAYEETRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCWWBB5LDDDktFRUXefvvtzx03fvz4HHbYYenbt286dOiQ1VZbLRdeeGGampo+d7/nn38+O++8c3r16pWamppstNFGuffee1vxHQAAAABfFxWlUqk0v0/yq1/9KieeeGKSZNSoUenXr1+L4955551ssskmGTNmzKeTq6hI8/T233//XHvttS3ud++992bHHXdMQ0PDLPtVVFRkyJAh+eEPf9jK7wgAAABYlM33K0QuuOCC/OxnP/vCcQ0NDRk0aFDGjBmTXr165fbbb09DQ0NGjhyZtddeO9ddd11uvvnm2fZ74403suuuu6ahoSHrrLNOXnzxxTQ2Nub+++9P9+7dc9RRR2XUqFHz460BAAAAi6j5FkSmTZuWvfbaKz/5yU/Sp0+fLxx/xRVX5NVXX01FRUVuu+227Ljjjqmqqsqqq66av/71r6murs4xxxyTmTNnzrLfz372s0ybNi29e/fO0KFDs9Zaa6WysjLbbLNNfve732XatGk54YQT5tfbBAAAABZB8y2InHbaabnpppuy4YYbZvjw4V84/rLLLkuSDB48OJtuuuks277xjW9k5513zvvvv5+nnnqq/PoHH3yQv/3tb0mS448/Pr169Zplv7322ivLLLNM7r777tTV1X3VtwQAAAB8Tcy3IFJZWZkzzzwzw4YNy1JLLfW5YydPnpxXXnklSbL77ru3OGbQoEFJMstCqU8++WR5sdXddttttn2qq6szcODATJs2LY8//viXeh8AAADA10/1/DrwmWeemXbt2s3V2DfeeKP8/YABA1oc861vfStJMnLkyNn269OnT/r27fuF+22zzTZzNZ9mzYu7zkldXV1GjhyZ3r17Z4kllkh19Xz7cQIAAEBhNTY2ZsKECUmSNddcMx07dvzKx5xvn+DnNoYkycSJE8v7zOkJNEsuuWSSzPLY3ub9VllllTkeu6X95tacIgsAAACwcAwfPjwbbLDBVz7OfH/KzNyor69PknTt2jVVVVUtjunRo0eSZNy4cbPt17xtbvcDAAAAiq1N3OPRHEE6deo0xzHt27dPkkyfPv0r7ze3Ro8e/YXbN9pooySfFqqll156ns8BAAAAfL5x48alf//+SZIllliiVY7ZJoJITU1Nkv8XL1pSWfnpxSzTpk37yvvNrbl5XHCzpZdeep7GAwAAAPOutdbvbBO3zDTf1jJ27Ng5jpk8eXKSpFQqzbbfe++9N0/7AQAAAMXWJoLIcsstl+TT21ref//9FseMHz8+SdKlS5fZ9hs1atQcj93SfgAAAECxtYkgsvjii5fjxogRI1oc88wzzyT5fxEkSdZbb70kyZtvvpmPPvporvcDAAAAiq1NBJEkGThwYJLkpptuanH70KFDkyTrrrtu+bUVVlghK664YhobG3PrrbfOts/MmTPz8MMPz7YfAAAAUGxtJogccMABSZKbb745zz///CzbRo4cmdtuuy1JMnjw4Bb3O+usszJ16tRZtl177bUZO3Zsqqurs+22286fiQMAAACLnDYTRDbZZJNsvPHGaWxszPbbb5977rkn9fX1eeSRR/Ld7343M2bMyIorrpgddthhlv3+7//+L927d88777yTbbbZJv/85z9TW1ubK6+8MocffniSZO+9985SSy21MN4WAAAA0Aa1icfuNrvxxhuz2Wab5d133832228/y7aOHTvm2muvTbt27WZ5fYkllsif/vSnfP/7388zzzyTtdZaa5btK6ywQs4777z5PncAAABg0bHArhAplUoplUrp16/fHMcsv/zyGTFiRA444IC0b9++/Hr//v3z+OOPZ+ONN25xv+9+97t55plnssUWW5Rfq6yszG677Zann346SyyxRGu9DQAAAOBroKJUKpUW9iRaMmXKlPznP//JEksskeWXX36u9xs7dmzee++9fOMb30ivXr3m4wyTMWPGpG/fvkmS0aNHp0+fPvP1fAAAAFBE8+Pzd5u6ZeazunXrlvXXX3+e91tmmWWyzDLLzIcZAQAAAF8XbWZRVQAAAIAFRRABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAApHEAEAAAAKRxABAAAACkcQAQAAAAqnTQaRhx56KIMGDcoSSyyR9u3bp0+fPtliiy1y1VVXZebMmS3uM3Xq1Jx44olZccUV06FDh/Tr1y+nnnpq6uvrF/DsAQAAgLauolQqlRb2JD7r0ksvzeGHH57maVVWVqapqam8feDAgbnjjjtSU1NTfm3y5MnZfPPN8/LLLydJKioqyvt/5zvfyf3335/q6upWn+uYMWPSt2/fJMno0aPTp0+fVj8HAAAAFN38+Pzdpq4Q+fe//52jjjoq7dq1y5AhQzJp0qQ0NDTk3Xffzbnnnpvq6uoMHTo0559//iz77bHHHnn55ZdTU1OTq666KnV1dRk9enQGDhyYhx9+eLbxAAAAQLG1qSBy0003pbGxMf/3f/+Xgw46KD169EhlZWX69u2bE044IUceeWSS5M477yzvc/fdd2fo0KFJkiFDhuTAAw8s32Zzyy23pEePHjnttNMyceLEhfKeAAAAgLanTQWR9957L0my8sort7h9ueWWS5JMnz69/Npll12WJFlzzTWzzz77zDK+W7duOeigg1JXV5d77rlnfkwZAAAAWAS1qSCy7LLLJskc48Vdd92VJFlvvfXKrz3xxBNJkt13373FfQYNGpQkuffee1ttngAAAMCirU0FkX322SedO3fOfffdl8MOOyz/+c9/Mn369IwcOTIHHnhgHnroodTU1OTHP/5xkmTChAmZMmVKkmTAgAEtHvNb3/pWkmTkyJEL5k0AAAAAbV7rP3rlK1hppZVy77335gc/+EEuu+yy8u0wzb75zW/myiuvzJprrpkks6wLssoqq7R4zJ49e6a6ujpvv/32PM9nzJgxn7t93Lhx83xMAAAAYOFrU0EkST7++OPU1dW1uK1Tp06zRIj6+vry9z169JjjMbt3754PP/ww9fX16dChw1zPpfmRPgAAAMDXS5u6ZebRRx/NjjvuWI4eK6ywQjbbbLPy84Wfe+657LLLLvn1r3+dJKmqqirv26lTpzket3379klmXYwVAAAAKK42dYXIsccem5kzZ2aZZZbJn/70p2y++eZJkqamptx888350Y9+lI8++ihnnHFGDjrooNTU1CRJqqurU1k557bTvG3a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0ye33HJLevTokdNOOy0TJ05ckNMHAAAA2rA2G0TOOeecPPvss+natWuuvPLKVFRUtDjusssuS5Ksueaa2WeffWbZ1q1btxx00EGpq6vLPffcM9/nDAAAACwa2mQQeeGFF3LGGWckSS688MIst9xycxz7xBNPJEl23333FrcPGjQoSXLvvfe28iwBAACARVWbW2l0xowZ2X///dPQ0JAVVlghkyZNyjHHHJN27dqlf//+2XHHHdO+ffskyYQJEzJlypQkyYABA1o83re+9a0kyciRIxfMGwAAAADavDYXRM4777y88sorSZJx48bl9ttvT6dOnfLPf/4z5513XlZZZZX86U9/ynrrrTfLuiCrrLJKi8fr2bNnqqur8/bbb8/zXMaMGfO528eNGzfPxwQAAAAWvjYVRN5///2cffbZST694uNvf/tbllpqqSRJU1NTLrvsshx99NHZcsst8/TTT6exsbG8b48ePeZ43O7du+fDDz9MfX19OnToMNfz6du375d8JwAAAEBb1qbWELnkkktSW1ub6urq3HzzzeUYkiSVlZX50Y9+lCOPPDJTp07NqaeemqqqqvL2Tp06zfG4zbfYTJ8+ff5NHgAAAFhktKkg8vDDDyf5dCHUOV2d8f3vfz9Jctddd6WmpiZJUl1dncrKOb+V5m3Tpk2bp/mMHj36c7+GDx8+T8cDAAAA2oY2dcvMhAkTkiQbbrjhHMf07t07SVJfX18OIo2NjRk/fnx523+bPHlykqRUKs3TfPr06TNP4wEAAIBFQ5u6QqRr165JPl3zY06mTp1a/n6xxRZL586dkySjRo1qcXxtbW1qa2uTJF26dGmlmQIAAACLsjYVRFZfffUkn/+I3GeeeSZJsuyyy2axxRbLeuutlyQZMWLE547v2rVrunXr1prTBQAAABZRbSqIbL/99kmSa6+9NmPHjp1t+9SpU/Pb3/42SfK9730vSTJw4MAkyU033dTiMYcOHZokWXfddVt9vgAAAMCiqU0FkV122SXrrLNOPv7442yzzTZ56KGH0tDQkMbGxjz88MPZbLPN8sYbb6Rjx445/vjjkyT77bdfKisr8+STT+bOO++c5XgTJkzIkCFDkiSDBw9e4O8HAAAAaJvaVBCprKzMrbfemjXWWCP/+te/svXWW6dDhw5p3759ttpqq7z44oupqqrKjTfemBVWWCFJsvzyy2fPPfdMkuy999658cYbM3369Dz33HPZdtttM2nSpHTv3j0HHnjgwnxrAAAAQBvSpp4ykyTf+MY38uyzz+bGG2/Mn//857z++uv54IMP0rVr1wwYMCAnnnhiNt5441n2ufjii/Pqq6/mxRdfzL777jvLtsrKylxxxRXp2bPngnwbAAAAQBtWUZrXZ9G2UbW1tfnFL36Ryy+/vPxUmdVWWy0XXnhhtt122/lyzjFjxqRv375JktGjR3tMLwAAAMwH8+Pz99cmiDSrra3NyJEj07Vr16y88srz9VyCCAAAAMx/8+Pzd5u7Zear6ty5c/lRvAAAAAAtaVOLqgIAAAAsCIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCFAI77//fg477LAss8wyqaioSHV1ddZff/1ceOGFaWpqWtjTAwAAFjBBBFikfPzxx6mqqkpFRcUcvw466KBZ9hk9enQ22GCDXHbZZRk/fnxWXHHFLLbYYnnuuedy7LHHZvDgwSmVSvNlvuPHj88KK6yQLbbYYr4cHwAA+HIEEWCRMnz48DQ1NaWysjIdOnRo8atdu3bl8aVSKQceeGDGjBmTrbfeOu+8807eeOONfPjhh7niiitSXV2de++9N1dddVWrz7W2tjbbb7993n777VY/NgAA8NUIIsAi5dlnn02SHHbYYamrq2vx69JLLy2Pv+uuu/LQQw+lX79+uf3229OnT58kSVVVVQ4++OAcfPDBSZIbbrihVec5ceLEfO9738tzzz3XqscFAABahyACLFKag8j6668/V+PvuOOOVFZW5uSTT07nzp1n27722msnScaOHdtqc3zhhRey3nrr5ZFHHknfvn1b7bgAAEDrqV7YEwCYF88880yS5Nvf/vZcjf/jH/+Yiy++ONXVLf/nbsyYMUmSpZZaqnUmmGTbbbfNhx9+mFNPPTXLL798/vd//7fVjg0AALQOV4gAi4w33ngjEyZMyJJLLpnVVlttrvfr2LFji0Hk448/zjXXXJMk2XHHHVtrmunXr18effTRnHbaaamoqGi14wIAAK1HEAEWGU8//XSSpFevXtlrr72y/PLLp2PHjll66aXz/e9/P/fee+9cH+vZZ5/NVlttldGjR2e99dbL4Ycf3mrzfPLJJ7PZZpu12vEAAIDWJ4gAi4ynnnoqSfLaa6/llltuSa9evbLpppumqqoqt912WwYNGvSFYePcc89Nnz598u1vfzsjRozItttumwceeCAdOnRotXl+9ik3AABA2ySIAIuMYcOGJUm++93v5s0338zzzz+foUOH5t13380ll1ySysrKXHLJJbn55pvneIzGxsbU1taW/3706NEZOXLkfJ87AADQtggiwCLjiiuuyK233prbb789yy+/fPn1ysrKHHbYYTn++OOTJL/5zW/meIyTTz45EydOzMMPP5yNN944r776arbZZhuPxwUAgIIRRIBFxoABA7LLLrukffv2LW4/6KCDkiTPPfdcPvzwwzkep7KyMltuuWUefPDBrLfeeqmtrW3VNUQAAIC2TxABvjb69OlT/v6tt976wvEdO3bM0UcfnSQZPnx4pk6dOt/mBgAAtC2CCLBIqa+vn+O2CRMmlL9vftxtfX19Xn311Tnus9JKKyVJSqWSIAIAAAUiiACLhDvuuCPLLbdcjjrqqDmOeeSRR5J8ekvMSiutlKampiy99NJZffXV57hGyLvvvpskqa6uTq9evVp/4gAAQJskiACLhKWXXjqjR4/OzTffPMuVIM1mzJiRc889N0myxRZbpEePHqmsrMw222yTJDnyyCPT0NAw236///3vkyQbb7xxqz56FwAAaNsEEWCR0L9//2yyySaZMmVK9txzz1kWTR0/fnwGDRqUV199Ne3atctZZ51V3vazn/0s1dXVefrppzNw4MAMHz48M2bMyPjx4/N///d/efLJJ1NZWZnTTz99YbwtAABgIRFEgEXGtddem759++bhhx/Osssum3XWWSdrr712lltuuTz00EPp3r17brnllgwYMKC8z1prrZUhQ4akuro6jz32WDbccMN07NgxSy21VK644oq0b98+f/zjH7P55pvPcq533nknHTt2TMeOHXP99dcv6LcKAADMZ4IIsMj4xje+kZdeeinHHXdcll122bzyyit59913s+666+bMM8/MG2+8kR133HG2/Q444ICMGDEie+21V5ZaaqlUVVVlmWWWyQEHHJAXXnghBx544Gz7lEql1NfXp76+PjNnzlwQbw8AAFiAKkqlUmlhT2JRNWbMmPTt2zdJMnr06Fke+QkAAAC0jvnx+dsVIgAAAEDhCCIAAABA4QgiAAAAQOEIIgAAAEDhCCIAAABA4QgiAAAAQOEIIgAAAEDhCCIAAABA4QgiAAAAQOEIIgAAAEDhVC/sCbBw9Dvx7oU9BQAWUW+fu/3CngIAwFfmChEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAACgzXj22WfTvn37bLHFFl84tr6+PmussUYqKiqyzz77tPpc6uvr88c//jHbbrttllhiiXTs2DHf/OY387Of/SwffPBBq58PWLAEEQAAoE2YMmVK9tprrzQ0NMzV+J///Of517/+laWXXjoXX3xxq85lzJgx2XDDDXPwwQfngQceyMSJE9PQ0JCRI0fm3HPPzRprrJFhw4a16jmBBUsQAQAA2oRDDjkko0aNmquxjz/+eH77298mSf74xz+mR48erTaPxsbG7LrrrnnppZfSvXv3XHXVVamtrU1tbW3uuOOO9O3bNxMmTMjgwYPz9ttvt9p5gQVLEAEAABa6IUOG5C9/+UsqKiq+cOzUqVNzwAEHpKmpKT/84Q8zaNCgVp3L7bffnmeffTZJcuONN+bAAw9MTU1NOnbsmB122CEPPPBA2rdvnylTpuT8889v1XMDC44gAgAALFSvvvpqjjnmmFRUVOQnP/nJF44/9thjM2rUqCy//PK54IILWn0+t956a5JkvfXWazG2rLbaatlmm22SJM8880yrnx9YMAQRAABgoamrq8see+yRadOm5ac//Wm23377zx1/11135corr0xFRUWuuuqqdO3atdXn9J///CdJPndh1759+yb5dN0TYNFUvbAnAAAAFNcxxxyTV155JRtttFHOPvvsz12odNKkSTn44IOTJOuvv36effbZ3H777encuXM222yzbLvttqms/Op/5tu+ffskSU1NzRzHTJgwIUmyzDLLfOXzAQuHK0QAAICF4tZbb83ll1+eXr165eabb0519ef/ee2JJ56Y999/P0ny2muv5YEHHshrr72Wyy+/PIMGDcqAAQPy1ltvfeV59evXL0nywgsvtLi9oaGhvMbIdttt95XPBywcgggAALDAvfPOOzn44INTUVGR6667Ln369Pnc8S+99FL++Mc/Jkl22mmnvPfee3nkkUcydOjQjBs3Lr/4xS8yfPjwbLrppuVo8mXtuuuuSZIHHnigHD4+65xzzsno0aPTsWPHHHjggV/pXMDCI4gAAAALVGNjY/baa6989NFHOf744+fqKTHnn39+SqVSevXqleuvv36WtUM6dOiQ008/PTvvvHPGjh2b88477yvNb5dddsmee+6ZhoaG7LDDDrnlllvy0Ucf5dVXX81Pf/rTnHbaaUmSgw8+OL179/5K5wIWHkEEAABYoE455ZQ8/fTT2XjjjXPWWWfN1T4PP/xwkmSfffZJly5dWhzz/e9/P0ny97///SvP8cYbb8z555+fysrK7L777unRo0dWX331cpjp1q1bTjnllK98HmDhEUQAAIAF5sEHH8yvfvWrLL744rnpppu+cN2QZs2LmG644YZzHNN8tca77777ledZWVmZH//4xxk7dmxef/31PPPMM7n22mvL23/xi19kiSWW+MrnARYeT5kBAAAWmBtuuCGlUikffvhh+dG1LXnsscdSUVGRJLn66qvTtWvXfPjhh+nevfsc95k6dWqSpHPnzq0234qKiqy88spJkpNOOilJ8s1vfjNHHnlkq50DWDhcIQIAACww7dq1S4cOHeb41a5duySfhojm16qqqrL66qsnSUaOHDnHYz/zzDNJPg0Wre2BBx4o37bzhz/8oTxPYNEliAAAAAvMkCFDUldXN8evBx54IEmy2WablV/bb7/9sv322ydJLrrootTW1s523Pfeey9XXnllkuR73/teq865qakpJ554YpJk7733zpZbbtmqxwcWDkEEAABo8w477LAss8wyeeedd7Lddtvl2WefTVNTU+rq6nLHHXdk0003zaRJk7LEEkvksMMOa9VzX3755XnhhRfSrVu3XHDBBa16bGDhEUQAAIA2r0uXLvn73/+ePn36ZNiwYfn2t7+ddu3apaamJjvttFNGjRqVmpqa3HHHHbM8kvedd95Jx44d07Fjx1x//fXzfN4PP/wwP//5z5MkZ599tsfswteIIAIAACwS1ltvvbz00ku54IILMmDAgCy55JKprq5O7969s8cee+Qf//hHBgwYMMs+pVIp9fX1qa+vz8yZM+f5nD/72c8yefLk9O/fP4ceemhrvRWgDagolUqlhT2JRdWYMWPKK2OPHj06ffr0Wcgzmnv9Trx7YU8BgEXU2+duv7CnAAAUzPz4/O0KEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcKoX9gQAAPjy+p1498KeAgCLqLfP3X5hT2GhcoUIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4gggAAABQOIIIAAAAUDiCCAAAAFA4i0wQefbZZ9O+fftsscUWLW6fOnVqTjzxxKy44orp0KFD+vXrl1NPPTX19fULdqIAAABAm1e9sCcwN6ZMmZK99torDQ0NLW6fPHlyNt9887z88stJkoqKirzzzjs544wzMmzYsNx///2prl4k3ioAAACwACwSV4gccsghGTVq1By377HHHnn55ZdTU1OTq666KnV1dRk9enQGDhyYhx9+OOeff/4CnC0AAADQ1rX5IDJkyJD85S9/SUVFRYvb77777gwdOrQ89sADD0z79u3Tp0+f3HLLLenRo0dOO+20TJw4cUFOGwAAAGjD2nQQefXVV3PMMcekoqIiP/nJT1occ9lllyVJ1lxzzeyzzz6zbOvWrVsOOuig1NXV5Z577pnv8wUAAAAWDW02iNTV1WWPPfbItGnT8tOf/jTbb799i+OeeOKJJMnuu+/e4vZBgwYlSe699975M1EAAABgkdNmVxo95phj8sorr2SjjTbK2WefnWHDhs02ZsKECZkyZUqSZMCAAS0e51vf+laSZOTIkfM8hzFjxnzu9nHjxs3zMQEAAICFr00GkVtvvTWXX355evXqlZtvvnmOT4j57Logq6yySotjevbsmerq6rz99tvzPI++ffvO8z4AAABA29fmbpl55513cvDBB6eioiLXXXdd+vTpM8ex9fX15e979Ogxx3Hdu3fP5MmTZxkPAAAAFFebukKksbExe+21Vz766KOccMIJ5fU/5qSqqqr8fadOneY4rn379kmS6dOnp0OHDnM9n9GjR3/u9nHjxqV///5zfTwAAACgbWhTQeSUU07J008/nY033jhnnXXWF46vqalJklRXV6eycs4XuzRvmzZtWrp37z7X8/m8q1MAAACARVebuWXmwQcfzK9+9assvvjiuemmm+a4bshnNd8m09jYmPHjx89x3OTJk5MkpVKpdSYLAAAALNLazBUiN9xwQ0qlUj788MPPXcz0scceS0VFRZLk6quvTufOnVNbW5tRo0ald+/es42vra1NbW1tkqRLly7zZ/IAAADAIqXNXCHSrl27dOjQYY5f7dq1S5JUVFSUX6uqqsp6662XJBkxYkSLx33mmWeSJF27dk23bt0WzJsBAAAA2rQ2E0SGDBmSurq6OX498MADSZLNNtus/Np+++2XgQMHJkluuummFo87dOjQJMm66667YN4IAAAA0Oa1mSDyZe23336prKzMk08+mTvvvHOWbRMmTMiQIUOSJIMHD14Y0wMAAADaoEU+iCy//PLZc889kyR77713brzxxkyfPj3PPfdctt1220yaNCndu3fPgQceuJBnCgAAALQVbWZR1a/i4osvzquvvpoXX3wx++677yzbKisrc8UVV6Rnz54LaXYAAABAW7PIXCGyxRZbpFQq5dFHH51tW48ePTJs2LD8+Mc/TufOncuvr7baarnnnnuy2267LcCZAgAAAG3d1+IKkSTp3Llzzj///JxxxhkZOXJkunbtmpVXXnlhTwsAAABog742QaRZ586dy4/iBQAAAGjJInPLDAAAAEBrEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQAAACAwhFEAAAAgMIRRAAAAIDCEUQA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Lrlklm11dXW54IILkiSDBw9eGNMDAAAA2pivRRDp3LlzjjjiiCTJj3/84/zud7/L1KlT8+9//zuDBw/Of/7zn1RXV+fII49cyDMFAAAA2oKvRRBJkl/84hfZZptt0tjYmGOOOSZdu3bNaqutloceeihJcu6552aVVVZZyLMEAAAA2oKK0tfoObSNjY351a9+lQsuuCCTJk1KkvTp0yfnnntu9tlnn4U8OwAAAKCt+FoFkWb19fV57bXX0r59+3zzm99MRUXFwp4SAAAA0IZ8LYMIAAAAwOf52qwhAgAAADC3BBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEYD/ct1112XSpEkLexoA8LU2adKkTJ48OdOmTUtjY2OrHLOxsTGffPJJPvzwwy+1/4wZMzJkyJBWmw/QtgkiAJ8xfPjwHHDAAfnGN76Rv/zlLwt7OgDwtfX9738/PXv2TOfOndOuXbtUVFR85a927dplscUWy/rrr/+l5nTRRRflkEMOyaqrrprXXnutld8x0NZUL+wJALQVn3zySfbbb7+USqVMmTIlTU1NC3tKAFAIzTGjoqKixe1NTU1paGhIknTo0GGOx2loaPjS//9++eWXc8oppyRJxo4dm44dO36p4wCLDleIAOTT32gdeOCBef3117PkkkumqqoqBx98cF5++eWFPTUA+Fq68847M3Xq1NTX16epqSn19fWpq6tr8evQQw9NkvzP//xPpk2bNsdxM2fOTENDwzz//3vixInZddddU1dXl2WWWSZ1dXXZYYcdMnXq1Pnx1oE2QhABSHL00Ufn1ltvzRJLLJHHHnssv/3tb/PJJ59khx12yPjx4xf29ADga2exxRZLly5d0r59+88d99prr+XSSy9Nkpx11lmprPz8jzDV1dVZbLHF5noetbW12X777fP6669nwIABGTlyZHbZZZe88sor2Xvvva0nAl9jgghQaKVSKUcffXQuvvjidO/ePQ888EBWW221HHnkkTnkkEPy9ttvZ8CAAXn11VcX9lQBoJCOOeaYNDY2ZtNNN83OO+/cqsf++OOPs+222+bZZ5/N2muvnXvuuSeLLbZYrrvuuqyzzjq56667sv3222fKlCmtel6gbRBEgMJqaGjID3/4w1x00UXp0aNH7rvvvqy99trl7RdffHF23333jBo1KgMGDMj999+/8CYLAAV01VVX5YEHHkiSHHvssa167Pfffz9bbbVVnnzyyay11lp54IEH0r179yRJp06dctddd2X11VfPAw88kAEDBuStt95q1fMDC58gAhTShx9+mK233jpXX311+vbtm2HDhmXDDTecZUy7du3y5z//OUcddVQ+/vjjDBo0KEcccUQ++uijhTNpACiQ0aNHzxJBampqWu3Yzz//fDbYYIOMGDEiW265ZR5//PEsscQSs4xZZpll8sQTT2STTTbJa6+9lnXXXTe///3vM3PmzFabB7BwCSJA4dx7771Za6218vjjj2f11VfPU089lf/5n/9pcWxlZWV+97vf5fzzz09VVVX+8Ic/ZNVVV811112XUqm0gGcOAMUwY8aM7Lnnnvn4449n29bQ0JBdd901Tz/99Dwft6mpKeedd1422mijjBkzJrvttlvuvffedO3atcXxPXr0yNChQ7PvvvtmypQpOeqoo7L++uvnqaeemudzA22PIAIUxrvvvpv99tsvgwYNytixY7Pjjjvm3nvvzZJLLjnHR/SVSqU0NDTk4IMPzv33358111wzH3zwQX7wgx9klVVWye9+9zv3FQNAKzv88MPz1FNPpU+fPuXbWJqdfvrp+etf/5qBAwdm6NChc33Mp556KhtvvHGOO+64NDY25qSTTsof//jHVFVVzfEPOZqamlJZWZnf//73ufLKK9OrV6+8+OKL2XjjjbP55pvn1ltvtegqLMIEEeBr71//+lcOP/zwrLrqqrnhhhvSvn37XHTRRTnooIOy3HLLpUOHDqmqqkpFRcVsX5WVlWnfvn26du2aX/7yl/nHP/6Rk046KR07dswbb7yRY445Jssuu2yGDRu2sN8mAHwtnHXWWfnjH/+YDh065K9//Ws6d+48y/bjjjsu6623XmprazN48ODcdtttczxWqVTK0KFDs8MOO2TjjTfOM888k6WWWioPPfRQ6uvr061bt7Rr1y6VlZUt/j6gqqoqHTp0SI8ePTJ27Ni88sor2XXXXZMkjz/+eHbbbbesuuqqmTRp0nz9mQDzR/XCngDA/NTU1JSrrroql1xySZJkgw02yJAhQ7LWWmvl0UcfzZprrpkuXbqkqqoqVVVVLe4/c+bMTJ8+vRxPfvnLX+ZHP/pRzjjjjFx11VXZZZddsskmmyzotwYAXzvnnHNOTjnllCTJpZdemv79+882plu3brn//vuzxRZb5JVXXsnuu++e66+/PnvuuedsYz/66KOcc845eeSRR5Ike++9dy688MIsscQSefbZZ7POOuukpqYm1dXVqaiomG3/mTNnZubMmamtrU2vXr2y1FJL5ZZbbin/AcmDDz6Yk08+OT179mzlnwSwIFSU3AQPFMARRxyRFVdcMUcffXQqK1vv4rg333wzPXv2TI8ePVrtmABQNE1NTTnuuONywQUXJEl+85vf5Kc//WmSpE+fPnnvvfdy7733Zrvttivv8/7772eTTTbJm2++mcrKylx77bXZd999Zzt2bW1t9thjjxxxxBGz7N8a/vGPf2SDDTZo1WMCC44gAgAALDRTp07N/vvvn9tvvz1JcsYZZ5SvEknmHESSZNSoUdlkk00yduzYVFVV5U9/+lN23333BTl9YBHmlhmgMN5///20a9dulq/q6rn/z2DzAqsNDQ2ZMWNGGhoaUlNTk8UWW2w+zhoAvr5efvnl7LHHHnnttdfKT3Y74ogj5nr/FVZYIQ888EA22WSTfPTRR9lnn33Svn377LTTTrOMa2hoyKRJk2b5PUD79u3n6arRpqamWX4P0NDQkB49eqR9+/ZzfQygbbGoKlAY/fr1y+KLL55u3bqlU6dOadeuXYsLqM3pq7KyMh06dEiXLl3Ss2fP9O7dO+eff/7CflsAsMiZNm1azjzzzKy//vp57bXX0qlTp/ztb3+bpxjSbPXVV8/tt9+eDh06pLGxMXvssUd5zZBmzz33XJZaaqn06tUrXbt2TU1NzRwXVJ/TV1VVVTp27JiuXbuW1xPx+F1YtLlCBCiM1VdfPUnKvwmqrKycZSHVt956K+3bt0+fPn1a3L+pqan8VV9fn7q6uiyxxBILZO4A8HXy/PPP51e/+lVmzJiRb37zm7n55puz5pprfunjbb755rnqqquyzz77pH///llvvfVm2V5TU5M11lgjHTt2TMeOHcu/D/jsFSLPPfdcVltttdmeatNs5syZ5d8H1NXVpa6ubo5jgUWDNUQAkrz++uvZZJNNMnPmzFx55ZWzXWoLALSuP//5z3nggQdy8cUXf25Y+Lw1RP7b9ddfn1122SWdOnWap7n89a9/ze6775411lgjN954Y9ZYY4152h9YNLllBii8f/3rX9lyyy0zYcKE9OrVK8svv3x52+TJk3PEEUdk/PjxC3GGAPD1s9dee+Xqq69u1ass9ttvv3mOIX/5y1+y1157pampKX369Env3r3L215++eUcd9xxaWxsbLU5Am2HIAIU2uOPP57NNtssY8eOzZ577pnnn38+66yzTnn7EUcckT/84Q8ZMGBAXn/99YU4UwCgtf3ud7/LXnvtlVKplHPPPTd33XVX+XbYurq67LzzzjnvvPMyePDgfPLJJwt5tkBrE0SAwrr88sszcODA1NbW5tJLL82f//zndOnSZZYxV155Zfbbb7+MGjUqG220UZ5++umFNFsAKKb5cYd/fX19DjnkkBxzzDFZeuml88gjj+SEE05IRUVFeUzHjh3zyCOPZN11183999+fzTffPO+//36rzwVYeAQRoHBGjx6dnXfeOYceemiWXXbZPPXUUzn00ENbHNuxY8dcd911+fGPf5yJEydm6623zr333ruAZwwAxTVz5sxZ/vpVPf3001l//fUzZMiQbL311nnhhReyySabtDi2b9++efTRR7P55pvn+eefzyabbJK33nqrVeYBLHwWVQUK5Wc/+1l++9vfpr6+Pkmy/fbbp2PHjpk+fXrq6uoybdq0TJ8+PdOmTUttbW1qa2vzySefzPKbsHbt2uWGG27I7rvvvrDeBgAUxuKLL56JEyfm9ttvz4477vilj9PQ0JDtt98+Q4cOTZJ06tQpgwcPzowZM1JXV5fp06eXv5p/H/DJJ5+ktrZ2lqtUll566Tz00EP55je/+ZXfG7BweewuUCidO3cux5Akufvuu2fZXl1dna5du6Zbt25ZYoklsuKKK6Zbt25ZbLHF0qVLl7z00ksZPnx49t5778ycOTN77bXXgn4LAFAodXV1s/z1y2rXrl2amprKfz9t2rT85S9/mWVMhw4d0q1bt3Tr1i3LLrts+fcAzb8P+Pvf/56xY8dm8803zyOPPJLVV1/9K80JWLgEEaBQ9ttvv/zzn//M6quvnn79+mXppZdO796907Nnz/To0WO2NUT+2yeffJIBAwZkypQp+da3vrWAZg0AxdVaQSRJjjrqqCy//PJZZZVVsvzyy6d3797p3bt3evTokZ49e6ZDhw6fu/8RRxyRDTfcMGussUb69OnzlecDLFxumQGYR6+//no6derkN0IAUEDDhg1L//790759+4U9FeArEkQAAACAwvGUGQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAACgcAQRAAAAoHAEEQAAAKBwBBEAAAqrVCqlsbExM2fOXNhTAWABE0QAWOTV19fne9/7Xi644IK8/vrrX/o4M2fOzIgRIzJixIjU1dW14gw/X319fa644ooFdr4imzFjRoYMGZLGxsb5do5hw4blP//5z3w7fks22mijVFRU5MILL5wvxz/00EOz77775oYbbpgvx08yz//OHXTQQenevXt++tOffqXz3nfffWnXrl3WW2+9Lxx73HHH5fTTT8+oUaO+0jkBaBuqF/YEAOCrevHFF3PXXXflrrvuygorrJBVVlnlSx2nqakpG2ywQZJk8uTJ6dix42znWW655dKzZ8+MHz8+K620Ujp06FD+qqyc/c8ZKioqctlll2WrrbZq8Zwff/xxBg4cmOHDh2fSpEk58cQTZ9n+4Ycfpn379unYsWOqqqpSVVX1pd7bfxs4cGBGjx79pfe/6aabsvbaa3/umI8//jidO3dutTmXSqXU1dWlpqbmSx/joosuynHHHZdzzz03d911V775zW+2ytw+64wzzsjQoUOz+uqr57nnnkuHDh1a/Rz/rXPnzkmSTp06feHYESNGZP3115+n47/66qt54oknUlNTk3333Td33XVXamtr06lTp7Rr1+4L92++CqO2tjbrr79+VlpppVm2n3nmmbn22mvz0EMPZfnll5+rOVVUVGTKlCkt/ns3L7p27ZokWWyxxWbbNnny5PTo0aP89w888ED++c9/ZsaMGfnlL3/5lc4LwMIniACwyHvwwQeTJF26dMmgQYO+9HHatWuX6upP/9fYvXv3NDY25sUXX8wDDzyQ22+/Pf/4xz9y9NFH58ILL0ypVMr06dPT1NRU/mr+4N/U1JRx48YlSX70ox/NMYYkn34YW3fddTN8+PCcfPLJWWuttfLd7363vH3ttdfOe++9N0/v4wc/+EGuueaazx0zbty4/Pvf/56n435WRUXFF47p1q1bkpRDztzsMydNTU1paGjIsssumzFjxnypY7z88ss55ZRTkiRjx46dLXi1hqampgwfPjxJ8u1vf3uBxJAkad++fZKUf/3OyT333JPBgwfnRz/6Uc4888xZPux/nuaf1dJLL50kOe200/Lcc899qbleffXVswSRpqamPP/883nzzTez5ZZb5oknnsiyyy6bJKmtrc33v//91NTUlP/9bP73bMSIEUk+vcJj7Nix5WM1NjamsbExdXV1+fnPf56NN974c+fT/DP777Dz4osvZuutt855552XAw44IA0NDRk5cmSSZPfdd/9S7x2AtkUQAaBNq6+vz9SpU1NTU5MOHTq0+IHvzjvvTJJstdVWX/gBtFQqpb6+PvX19amrq8viiy8+yxUMVVVVaWxszIABA/LSSy9l+vTpST4NACussEL++c9/ZuzYsVlmmWXmeNvF6aefntNOOy0bbrhhfvvb337he/z973+ff/3rX3niiSey55575sknn8waa6yR5NM/+V988cVnuUJkTmHhvffeS11dXfnD8edp/jldffXVOeCAA75wfJI0NjaWPzTOzQf96urq1NTUfOHVLZ8NPksvvfRsf+I/Y8aMzJgxI/X19V/6apOJEydm1113TV1dXZZZZpmMHTs2O+ywQ5566qkWrwz4sp588slMmTIlSXLssce22nG/SPPP5fOulmhsbMxxxx2XUqmU+++/P6eeemqL4/bYY48899xz+d///d+cdNJJSf5fEFlmmWWSJHvttVe23nrrdOrUaZZfb//4xz/yt7/9Ld/61rey1157lV8vlUppaGhIbW1t/ud//meW81VWVuZPf/pTvvOd7+SZZ57Jtttum6eeeipdu3ZNQ0NDHnnkkdTU1KR9+/apqqpKZWVlKioq8vHHHydJ3n777UycODGlUqkcJ5t/vfzf//3fbO/vrbfeSv/+/dOlS5e0a9cuM2bMSJI8++yzWXnllTNt2rQccsghmTx5ciZOnJgnn3wyBxxwQF566aXMmDEjffv2zVprrfX5/0AAWDSUAKANu/fee0tJ5tvXqFGjZjlfhw4dSklKK664YmnPPfcsXXDBBaUnn3yyNHXq1BbnN3PmzNLNN99campqKpVKpdJDDz1UqqysLPXu3bs0evTouX6f77zzTqlr166ldu3alW644YYv9bPafPPNS0lKRxxxxBeO3WCDDUpJSldfffVcH7+hoaH8c/vPf/7zpeb430466aTyMY888shWOeZ/++STT0obbrhhKUlpwIABpY8//ri0yy67lJKUBg8eXGpoaGi1cx155JGlJKXvfOc7rXbMz1pzzTVLSy65ZGm55ZYrrbzyyqVVV121tOqqq5a6dOlSSlJaaqmlSqusskrpG9/4Rmm55ZYrLbXUUqXu3buX3nvvvdKZZ55ZSlJabLHFSiNHjpzjObbddttSktIvf/nL8ms77rjjXP16GTJkSClJaY899pjn9/bBBx+UllpqqVKS0vbbb1/+d2pOjj766FKS0qmnnjpP5/nPf/7zhf9dOPDAA0udOnUqdevWrTRhwoRSqVQqnXfeeaUkpYMPPnie3xsAbZMrRABo06qqqtK1a9d07tw57dq1m+2y9g8++CBTp05NdXX1XK890NjYmBkzZqS2trbFP1Hv3Llz3njjjdle/8Mf/pAdd9wxffr0Kb/2q1/9KieddFKuvvrqnHPOOdl7771TXV2dv/71r7OM+yLLLbdcfv/736dfv37ZbLPN5nq/lszNFSLN7/vAAw/MgQce+JXO92Wde+65Ofvss5MkO+ywQ373u9+1+jk+/vjjDBo0KM8++2zWXnvt3HPPPVlsscVy3XXX5a233spdd92V7bffPn/5y1/Kt/jMjRtuuCH77bffHLc//PDDX+oWoVVXXbV8W0ZLPv7443zwwQdz3P7+++/n/fffn+31F198MWeeeWaST68KWnXVVed4jOarfxZffPG5nXarWGKJJTJkyJB873vfywcffJDp06enU6dOmTZtWmbMmJEOHTqkXbt2c7xKqvT/r1PSfLtMU1NTevXqNdu4FVZYIR988EH5vykvvvhi+vfvn6222ip33XVXpk2blmOOOSbTpk3L+eefX/45DB06NEnSr1+/vPjii0lSviKlsbExDQ0NmTFjxufeIgdA2yKIANCmDRw4sHwLwn+bMmVKVllllUydOjWHHXZYLrroolY55/Tp0zN16tRZbqWYMWNGTj755Bx11FF5++2307dv3yTJBhtskH79+uW+++7LfffdlyS54oorvnDdgiQ59dRTM3HixGy66abZY489sv/++7fK/OdmkcumpqYkyZJLLjlPt4y8+eabST798PllNTY25qc//eksAeSb3/xm+UPuhAkT0qtXr6+8WOb777+f733vexkxYkTWWmutPPDAA+nevXuSTxcfveuuu7LNNtvkgQceyIABA3LXXXflG9/4xlwd+7O3DLXGOiEzZ85MY2PjF65rcvfdd6dDhw7p1q1bunXrVo5fO+20U+64445cffXV2X///TNz5szyrUYTJkzIoEGDMmPGjPz4xz/OLrvs8rnnaP7nMDdhrbUNHjw4v/3tb3PAAQeUF4i97rrrcthhh81xn9NPPz2nn376bK/vscceuemmm2Z7vaqqKksssUT57z8bVzp27Jh//vOfufHGG7P66qvnyCOPTJJMmjQpDz30UJLk5z//eX7+85+3OJfOnTvnk08+mYt3CkBbIIgAsMg65ZRT8sEHH6RTp07ltQ6+qi5dumTixIn59re/nXXWWSfJpx/+n3vuuXz00UfZfPPNyzEkSbbeeuu88MIL2XPPPXP//fenqqqqHBu+yF/+8peMHDky7du3zx577NEq859bM2fOTPLpFS5fZg2R5v3n1ZgxY7Lvvvvmsccem+OYH/zgB3n77bdz5pln5vvf//6XutLi+eefz4477pgxY8Zkyy23zO23315+mkizZZZZJk888UR22GGHDBs2LOuuu27OPPPM/OhHP/rCtUqaI0jv3r1bvCJjXl188cU58sgjvzCurL766l94rMrKylRWVqZdu3bp1KlT/vd//7e8YOmvfvWrrzzXJJk6dWr++te/zvb6U089lSQZNWpUiwv7rrzyyl8YC4855phZ/n7dddfN6aefno4dO85yhcjf/va3PProo/nud7+b7373uymVSpk5c2ZmzpyZ+vr6rLzyyvP8vqZMmZJ99tknFRUVueaaa8q/3m+//fY0NjamT58+2XDDDcvj//Wvf2XkyJH51re+leWWW26+Ps4ZgNYniACwSHrsscdy8cUXJ0kOP/zwLLXUUq1y3JNPPjmnn356Xn311bz66qvl16uqqrLOOuvkkksumW2f7t2756677soPf/jDXHfddTnxxBOzzTbbZIUVVvjcczX/CfjcPCq1tX3ZoPFl9y+VSrnmmmty7LHHlq/42XTTTfPmm2+WnxCSJA899FDuvffeJMmuu+6atddeO6effnp22GGHuTpPU1NTLrjggpx88smpr6/Pbrvtluuvv36OoaFHjx4ZOnRoDj744Nxwww056qijctVVV+UPf/hDNtpoozmeZ348oWZ+HPfkk0/O7bffnhVWWCG33HLLFz6FZm5Nnjz5c2+1Gj58ePlpO591yCGHzNXVU5/Vv3//9O/ff7bX33zzzTz66KPp379/+UqOzzN+/Pisuuqq6dixY9q3b5/q6upUVlamvr4+yacxZ9VVV8348ePTvn377Lbbbpk2bVouvPDCctw58cQTc/jhh8/yfkaOHJmTTjppgUdNAL46QQSARc6HH36Y/fffv3zbxm9+85v85je/mev9t9tuu/KH7v+2/fbbZ/vtt//CP12+6aabMn369HTs2DEdO3ZMRUVFdtxxxzzzzDP5/ve/n5deeikvvfRSeXxNTU223XbbWY7RfBXCZz+kDhs2LJtuuulcvY9zzjknJ5544lyN/W91dXVJkhNOOCFnnXXWl95/brz44os58sgjM2zYsCSf3qJw5JFH5je/+c1sTxzZbLPNcvHFF+ess87K+++/nxdffDE77rhj+vfvn7PPPvtz12d46qmn8pOf/CTPPPNMqqqqctJJJ+WEE05IVVVVSqVSi1eaNDU1pbKyMr///e+z5ZZb5vjjj8+LL76YjTfeOJtttlmOPPLI7LTTTrOFhK96O8+cfJVHE/+3a665JmeffXa6du2aO++8s8X1NL6sz4abK664onwlxSOPPJLrrrsu/fv3n+U2l5tvvjn33XffLPtNnTo1m222WTp37jzLz/fUU0/NlltumSTZbbfdMmPGjFkeudv8M2p+7O/f/va38po/pf//STPNtyDV1dXl9NNPzwYbbJBSqZRp06aV1xr57FObllxyyfK6Jd27d0+HDh0yderUTJs2LS+++GKeeOKJVFRUzBY93n333SSZ61utAGhbBBEAFikNDQ3Zc889yx9E+vXrN9drOEyYMCGTJk1KTU3NHMecfvrpufHGG3PaaafN8bGkSXLaaafl3//+d4vbzj333Nle22effWYLIi19qG7+wFhZWTnHK0zGjBmT+vr6r7TGQ3PQ+OCDDz53kc4v2v/zvPrqqznrrLNy0003lePVaqutlksvvTRbbLFFi/u0a9cuhx9+eA444IBceOGF+c1vfpMpU6Zk+PDh2XrrrTNo0KBceOGF5WBVKpXy4IMP5ve//3358ctLLbVUbrrpptx5553ztFDqmWeemVdeeSVHHnlkbr311jz++ON5/PHH841vfCP/+Mc/0rNnz7k+VmtaaaWV8vHHH6empibV1dUtRpPm23Y+G7jeeeedJJ/+jHbcccdZxjc/mvaTTz7J8OHDs8oqq8zTnD4bNvbbb7/y39fV1eW6667LCiusMMutWK+88spsQWTmzJnlxUk/67NrcAwbNiyffPJJOYg03w6UfBqPll122UycODGPPPJISqXSLI/ebV7kdNKkSUk+/XXR/Ijdz5owYUJ23nnnfPDBB9lpp51yww03pHPnzuXtzY8PLpVKqa2tnWWx2eafsSACsGgSRABYZDQ1NeWAAw4oL26YJLfddlvWXnvtudr/xBNPzK9+9as5BpSJEyfmb3/7W5Lk+uuvz5///OfyugTNT6bZddddc9FFF+W6664rL4JZU1OTioqK7L///vnHP/6RW2+9Nauvvnrq6+vTv3//zJgxY67X6Wj+wNijR48Wn3STJOuvv36ee+65rxRE3n777S+97xe57bbbMmTIkNx3333lENKjR4+ccsopOeKII+Zq0dfOnTvn5z//eQ499NCcdNJJ+eMf/5impqbcc889efDBB/P3v/892267bT766KOcc845eeSRR5Ike++9dy688MIsscQSefbZZ7POOut8bkhoXnOitrY2vXr1ylJLLZVbbrkl//jHP3LSSSflwQcfzMknnzzXMWTQoEFzvPros7bccss8/PDDc3XMurq6TJ8+PUnKUeC/de/ePd27d09jY2N54duqqqosu+yy5WN8VvOiq9OnT/9SC+R+2V97n/1n361bt4wbNy41NTXp2LFjdtlll9x9992zRJNx48Z9qfPMrcceeyx77713xo4dm+OOOy7nnnvuLD/fp59+OjfffHP574cNG1Z+mlVDQ0PefPPNdO3atVWvvgFgwRFEAFgk1NfXZ7/99sstt9ySqqqqr7QGxpzWUTj//PMzffr09O7dO3V1dZk8eXKmTZuW7t27p6KiItOnTy9/sGxpTYPmtUCWX375rLbaarnnnnsyY8aMLL744uVbAL7s3FoyLx9KJ06cmOrq6nIcaI1bPpofNTpt2rR06tSpfOXN1KlTy1GgpqYmhx9+eE466aT06NFjns/Rq1evXH755TnkkENy8MEH54UXXsjiiy9eXoeiR48eufPOO7PHHnvkiCOOyHbbbVfe9/jjj8/xxx//pd7bBhtskKFDh+Yf//hHNthgg7ner/nKgp49e87yJJNm48aNy8cffzxP68aMGTNmrsZ99NFH2WWXXTJ+/Pj07t07N998czbffPO5Ps+CVlFR0eLaPy0taPvLX/4yr7322lwfe6WVVsppp502x+0NDQ1Zc80188Ybb2TmzJlp165d/v73v+fvf//7LOO22WablEqlHHLIIbniiivy0EMPZZ999kmS/Pvf/05DQ8PnrjUDQNsmiADQ5n388cfZaaed8sgjj6SysjJ/+MMfcuihhyZJdt5553m6ZSZp+QPXv/71r1xwwQXp06dP3nrrrbRr1678KNPrrrsu3/ve92bbZ+TIkenXr98cF8JcccUVc+qpp6ZLly5f+NSSZnM7Lpm7x+s223bbbctrLswPV199dfkqmP333z/33HNPll122Rx33HGtsuDteuutl+HDh+f888/PKquski5dupS3de7cOXfddddXPkdL5iWGJP8vih188MEt3jp1wAEH5Nprr231hXSfeeaZ7LvvvnnzzTez0UYb5ZZbbskyyywzy5j33nuvfMXIlzW/1k75onM89thjGTp06FwfY9NNN51jEPn73/+en/70p/nPf/5Tfq2hoWG2W+Cqqqryz3/+M1OmTMnvf//7PP3007nnnnvK69E03+7z2afOALBoEUQAaNOGDx+efffdt/zh5Q9/+EN22WWXchBprVs/xo8fn29+85s54IADyqGh+eknc7pdYsstt8wHH3yQhx56qMU1MVZdddXP/VPqlszLYzvn5VaH5ZdfPvX19enQoUPat2//uVeXvPjii5kyZUpWX331WdZL+O9zf/YKkf9eq+Omm26a67nNrerq6pxwwgktbmtoaMikSZPSrl278lf79u3n6QP8Z9edaGhoSENDQ3r06DFPV+LM7aKorRUWtthii1keYXzMMcfk17/+9Syx7JNPPskJJ5yQ6667Lm+++WaWXHLJeT5P85OBPm/9nfmpOSBdeuml5X/3W3LNNdfkwAMPbDGSPvvssznqqKPKT7/ZZZddcskll5R/Hs8880z22muvvP322/nud7+bCy+8MO3bt8+1116bJPnud7+bX//61+WFj5tv0xJEABZdgggAbdZll12WI488shwJzjnnnBx66KH58MMPy2NeeOGFeV5DpCXf+c538sILL8wSJN57770kcw4i06dPT1NTU771rW/Ntq153ZHp06enqqoqiy222FzNsfkRoHNjXm4b+utf/zrba4899lg22GCD2a5WaP6QfdZZZ2WnnXaa63PMyYYbbtjiI1g/61e/+tUc/9kkny52+4tf/GKO25977rkMGDDgS89xTh555JE5LgC7MJVKpVx22WXlq3569+6dIUOGzHIlU2NjY/74xz/mjDPOKK/FcfTRR+fPf/7zPJ9v/PjxSTJPi9S2pnl9XHBLV23169cvkyZNyuKLL56LL754lifGXHnllTn00ENTWVmZiy66qMXH+A4ePDi//vWvc80112TTTTfNgw8+mCT59re/PY/vBoC2QhABoM3abbfdcsMNN+Tpp5/OpZdemkMOOWS+natDhw5ZbLHF0q5du/JtK80fIr/zne+U1y2pra3NxRdfnP333z/Tp09PRUXFbMHkv2+zOOGEE1q8faIlzU/BmDx5clZaaaUWxzSvKTEv8eS/TZ48OVtssUXat2+fiy66KP/3f//3pY/1RZqvKqiqqprnD7YzZsxIqVT6wltMampqssYaa5Qfg1xVVTXLE0mST6PJaqutNssTRD5r5syZ5SeU1NXVpa6ubo5j52Rur/D5KmvgPPzwwznppJPy7LPPll+75JJLyjHk448/ztVXX52LLroob731VpJkySWXzOGHH97iB/3/1tDQkOT/vZempqbycZoXFF3Qmn/dHHbYYbM8zndOWrr1rHfv3nnooYdSU1Mz2/ouzTH0lFNOKf+MZs6cmVGjRmWJJZZIt27dsskmm2TllVfOn/70pwwcODDvvvtu+vfvP9utSQAsOgQRANqsXr165a677sqwYcMyePDg+Xqujh07pkOHDuXHe9bW1qZUKqVz587lD8X19fXlBUknTZqUGTNmtHg7xTrrrJNOnTqlsbEx06ZNa3FxzTlpjhxNTU3lp4XMybRp0+bhHc7q0UcfLX//349kbXbYYYflpz/9aZKUH2fa/FSWGTNmZLvttsv111//hedq/hkddNBBueyyy+Zpnquttlr+/e9/f+F6KWuttVZefvnlOW7/61//mt133z3Tpk3LkCFDssYaa8zTPOZW8z+TIUOG5Pbbb59te3Nk+zL/7IYOHZqzzz67/M9u3XXXzccff5w33ngjTU1NeeCBB3LzzTfnlltuydSpU5N8uvjvYYcdlr322muu19pp/jXY/NeXXnop9fX16dKlS1ZcccV5nveXNW3atHTs2HGWqLXtttt+7hVhL7/8cu655545bl9uueVme+2zj7B+5JFHsscee+S1117L66+/nvr6+vJVQhUVFfnRj36UY489NgceeGCST59qBMCiSxABoE3r3r3758aQddZZp1XO07xGQrNjjz02F154YTbccMPcd999s30gf+qpp5L8v1tjPnvlwxVXXJH111//S81j0003/VKPQZ1XzbdNbLrppnNc9HTGjBmprKwsz6f5Corm9TWar2b5IvOyUOz8OMZf/vKX7LvvvmlqakqfPn3Su3fv8raXX3451113Xc4555x5vnqlJc2Px500aVImTZo0x3FzG0Q++uij3HTTTbnkkkvKwadLly4544wzctRRR2WrrbbKG2+8kb333rt8ZUevXr1y1FFH5aCDDsqaa645z++htrZ2lr8232612WablX9Gc3uFy/DhwzNp0qTyOidz+zOur6/PDjvskD322CMHH3xw+fWddtrpC9cQmVMQqa2tzW233ZZ33303b7/9dt566628+eabeffdd9PU1JTk08fqJslSSy2VTTbZJKuttlpWWGGF8jEOOOCA/PznPy8/feqHP/zhXL0fANomQQSARVq/fv3m6Skzn/chtdnEiRNz9dVXJ/n09oQBAwbkT3/6U1ZZZZXymOYPeDNnzsxLL72U9dZb70vMfuF45513ylcvPPTQQ7nkkkvyox/9aLZxV155ZausIbIgnkwyJ7/73e/y4x//OJWVlTn33HNz/PHHlxc+raury84775w333wzL7/8cm699dZZnl7zZTQ/bri1jBgxoryOTvv27XPIIYfklFNOmW1h1C5dumSnnXbKbrvtlq233nqenkD0355++uny9++8805+97vfJUn222+/8utzG0ROPfXU3HfffeW/n9NtYJ81ZcqUbLfddnn00UczevTo8tOLkuT222//3IWUP+8qoZqampx88sl55513yq9169YtG220Uerq6jJixIgceuihOeuss9KrV68Wj/Huu++Wf7aLL774PC2CDEDbI4gAsEi77bbbWmVR1c869thjM2XKlGy++eaprq7OQw89lPXWWy+XXnpp9t133yTJn/70p1mO+9kPfW3dqaeemoaGhtTU1GT69Ok5/PDD8/LLL+c3v/nNVw4CLZnbJ6+0pvr6+hx55JEZMmRIll122dx0003ZZJNNZhnTsWPHPPLII9lpp51y//33Z/PNN8/dd989V48Jbr6iYH7beuut85Of/CTvv/9+TjvttPTr16/FcVddddVcxaupU6fmxBNPzOmnnz7HJwg1a2hoyA9+8IN88sknWXPNNbPbbruVtzVfCfNF9t5779x3332prq7O7rvvnt13332OY5uvmjnggAPy0UcfZfDgwbn22mtniTv3339/7r///rk693+rrKzMsccemxEjRmSrrbbKxhtvnJVWWikVFRU577zzMmLEiCy77LJzjCHPP/98tttuu0yZMiVdunTJG2+8ke222y5///vfv9STewBY+BbeH9kAwJf0Zf9Udm5uRbnmmmty/fXXp0ePHrnhhhty33335aCDDsonn3yS/fbbL3/5y19y33335ZVXXknv3r3zve99Lw8++GD23Xff8i0LbdmDDz5YfozolVdemfPPPz9VVVW57LLLsuqqq+a3v/1t+VaJ1rIgbgH6rKeffjrrr79+hgwZkq233jovvPDCbDGkWd++ffPoo49m8803z/PPP59NNtmkvIDo5/nkk09adc7Nv6ZbikfnnnturrnmmjnGkGTuA82jjz6aSy65JMstt1xGjBjxucc75JBD8thjj6WmpibXXHPNLLctzZgxI717907v3r1nmfNnF2JNPl3z46677sr48eNz4403zvERxm+++Wb5ypQpU6bktNNOy9///vfygsXNx7300ktTKpXm+NV8ZdecHH300bn++utzwAEHZOWVV57rWHfFFVdk4403zoQJE3LIIYdk5MiRWXnllfPss89m3XXXzdChQ+fqOAC0La4QAWCRMy9P6Gi+PL6hoaG8GOWc/gT4jjvuKK9XcNlll6VPnz5JPv0wlHz66NFBgwalf//+SZJf/vKX2XPPPbPlllvmpptuKh9nbp/+0ppXGTQ2NmbUqFFJ5nxFxhtvvJG99toryadXHjR/v+GGG+Z///d/8/rrr+fHP/5xefxf//rXfPTRR+nbt2+6dOmSjh07pl27dqmrq8u0adNSW1ub8ePHZ+zYsZkyZUrOPPPMFteIaA4il19+eS6//PIv9f7m5p95Q0NDtt9++/KH006dOqVnz5455JBDUldXl/+vvXsJiXqNwzj+zJQ3ZnQwyGjEZAIFUVooTIWhVDCFpShIm8iupEHZwpqNSbmpCKFV0AWF1CAkwUsElSVNRkh0IRELu1iCSklRZjounLOI+dPkeNTjqU5nvh9wMc7rO+9fcfE+vO/vNzY2Znz51//lyxejgK70bWO+Zs0a3bp1SykpKdN+1nw6/Ejf6lmcPn1a4eHh8vl8xomj2NjYOc3jL/h78+ZNFRQU/O0Gf2xsTFVVVZKkpKQkpaenBx03MjKioqIiNTU1acGCBaqtrZ0yNiEhQUNDQ1N+1l9Xxh9gxMXFadOmTTM+R2Njo8bHxxUZGamLFy9OOUky3993MP4iwW/fvlVzc7Okqde7Ojs7VVZWpnv37slsNquyslIVFRUymUy6c+eONm/erEePHsnlcikvL09lZWXKysr619cKAPg5CEQAAH+c2R7XlySPx6OioiLjtclkUk5OTsAYn8+nkydP6siRI5qcnJTb7Q7YkJlMJp07d05er1fFxcXq6elRRkaGdu7cKbPZrPb2dm3dutXYVGVlZSklJUVOp1MOh0ORkZHyer1asWKF8vLyjHnn03rVb/fu3Xry5ImGhoY0MDAgSUGvvXR2dio/P1/Dw8NasmSJcUpEkjIzM9XV1aWamhqdP39ejx8/liTV19ervr5+VusoLy+ftmCm/znn03Z3NqdvwsLCAkKmr1+/qqGhIWBMRESEbDabbDab4uPjZbPZFB0drejoaFmtVrW0tGhgYEDZ2dlqb29Xampq0M+a72kgi8Wirq6uKevbuHHjnOZJT0/XtWvXdPbsWTU3N8vhcMhqtSomJkZms1mfP3/W6OioRkZG1Nvbq9HRUUVERKi6ujpobZe2tjbt2rVL/f39CgsL06VLl1RYWDjr9fgDkbkGGG63W2/evFFhYaHWrl075f2Z5nv//r0qKyuN6zQztWmWvoWlSUlJAf+H/iK0V69e1fHjx41TK8uWLdOFCxfkcrmMsUuXLpXH49G+fftUV1enlpYW9fX16e7du4qJiZn5oQEAvx2BCADgjzM+Pj7rsbm5uTKZTLJarcrIyNDevXu1fv36gDETExP68OGDfD6fduzYEbTOiM/n04EDB1RXVyeLxaL6+npjQ2mxWNTU1KTW1ladOnVK9+/fV3d3t7q7uwPm+L7VrTS3YGc62dnZqqmpCfjeunXrAl5PTk6qqqpKQ0NDioqKUmNjo+x2e8CY8PBwlZSUqKSkRC9fvlRbW5sePnyoZ8+eaWBgQMPDwxofHzcCih99X1/iR/7wYD5td2fblaW0tFSJiYlKTk5WYmKica0jNjZWixYtmrEA7/79+7Vy5UqlpaUZJ4SCiYqKUnx8/LxqR2zbtk3Xr1+X3W5XamqqXC6X9uzZM6c5Dh06pJ6eHt24cUODg4NGW98fLVy4UHa7XTk5OTp8+PC0XZAyMjKUn5+vy5cv68qVK3M+7eD/W/+TtsJnzpyZ9r2ZApHFixfr+fPnev36tZxOpw4ePDjj5zkcDmVmZsrj8SghIUFut1u5ubmSpOXLl+vp06eyWq0qLS1VeXl50JDFYrGotrZWBQUFqqioUGtrK2EIAPxBTL5ffbEXAIBf7NOnT7LZbDOOu337dkBr0e9NTEyoo6NDJ06c0Pbt243iqsF8/PhRDx480IsXL9Tf36/BwUGNjo6qoaEh4EqDw+FQX1+fjh49qmPHjv2jZ3v16pWSk5OVnJys1atXa8uWLdqwYUPQsdXV1YqLizM2fb/KqlWr1NnZqeLi4jkHIr9DR0eHnE7ntPUu/qu8Xq9xBWhsbEwRERGyWCyyWCyzOjHxvZGREUVHR/+klf4c7969M553tnp7exUWFha0PovH41FaWppRxwQA8P9DIAIAwBz4fL7f0jXl7/hrLwAAAGD2CEQAAAAAAEDIoe0uAAAAAAAIOQQiAAAAAAAg5BCIAAAAAACAkEMgAgAAAAAAQg6BCAAAAAAACDkEIgAAAAAAIOQQiAAAAAAAgJBDIAIAAAAAAEIOgQgAAAAAAAg5BCIAAAAAACDkEIgAAAAAAICQQyACAAAAAABCDoEIAAAAAAAIOQQiAAAAAAAg5BCIAAAAAACAkEMgAgAAAAAAQg6BCAAAAAAACDl/ASWqw2ePVD5kAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1280x960 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytools.show_bar(df,'有疑问是否会向老师请教')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>性别</th>\n",
       "      <th>女</th>\n",
       "      <th>男</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>有疑问是否会向老师请教</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不会</th>\n",
       "      <td>56.14</td>\n",
       "      <td>35.48</td>\n",
       "      <td>46.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会</th>\n",
       "      <td>43.86</td>\n",
       "      <td>64.52</td>\n",
       "      <td>53.14</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "性别               女      男     合计\n",
       "有疑问是否会向老师请教                     \n",
       "不会           56.14  35.48  46.86\n",
       "会            43.86  64.52  53.14"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['有疑问是否会向老师请教'],\n",
    "        df['性别'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>有疑问是否会向老师请教</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不会</th>\n",
       "      <td>47.5</td>\n",
       "      <td>29.27</td>\n",
       "      <td>57.41</td>\n",
       "      <td>22.22</td>\n",
       "      <td>46.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会</th>\n",
       "      <td>52.5</td>\n",
       "      <td>70.73</td>\n",
       "      <td>42.59</td>\n",
       "      <td>77.78</td>\n",
       "      <td>53.14</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级             大一     大三     大二     大四     合计\n",
       "有疑问是否会向老师请教                                  \n",
       "不会           47.5  29.27  57.41  22.22  46.86\n",
       "会            52.5  70.73  42.59  77.78  53.14"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['有疑问是否会向老师请教'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从柱状图我们可以看到，“会”的比例比“不会”的比例略高一点，而56%的女生认为不会向老师请教，44%的女生说会向老师请教，男生有35%的说不糊向老师请教，有65%的说会向老师请教。其中大一和大二“不会向老师请教”的比例略高，而大三和大四“会向老师请教“的比例远高于“不会向老师请教”的比例。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>是否会参与讨论</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>有时</td>\n",
       "      <td>125</td>\n",
       "      <td>60.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>积极参加</td>\n",
       "      <td>62</td>\n",
       "      <td>29.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>不参加</td>\n",
       "      <td>20</td>\n",
       "      <td>9.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  是否会参与讨论   个数    百分比\n",
       "0      有时  125  60.39\n",
       "1    积极参加   62  29.95\n",
       "2     不参加   20   9.66\n",
       "3      总和  207  100.0"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = pd.DataFrame()\n",
    "b['是否会参与讨论'] = df['是否会参与讨论'].value_counts().index\n",
    "b['个数'] = df['是否会参与讨论'].value_counts().values\n",
    "b['百分比'] = df['是否会参与讨论'].value_counts(normalize=True).values * 100\n",
    "b['百分比'] = b['百分比'].apply(lambda x: round(x, 2))\n",
    "total_row = pd.Series({'是否会参与讨论':'总和','个数':b['个数'].sum(),'百分比':b['百分比'].sum()}).to_frame().T\n",
    "pd.concat([b,total_row],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEQAAANnCAYAAAA4Go01AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAB7CAAAewgFu0HU+AACARklEQVR4nOzdeZiWVf0/8PcMwzKArO6hgLjggmvu5pKiuWVq7ktiZGlqpKXUt9TQ3HJNTZPULC1KTUtxw9z9hubCV1zQVEBUZBFEBGZghuf3B9c8PycGBGUZvF+v65qr4TnnPufzcOXNPO859zkVpVKpFAAAAIACqVzeBQAAAAAsawIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwllmgciJJ56YioqKjBkzZqH9JkyYkBNPPDFrrbVWWrdund69e+eKK67I3LlzF3rd888/nwMPPDBdu3ZNdXV1dthhh9x3331L8B0AAAAAXxQVpVKptLQnueiiizJw4MAkyejRo9OjR48m+40dOzY77bRT3nnnnXnFVVSkobxjjz02N998c5PX3XfffTnggAMyZ86cRtdVVFRk8ODB+fa3v72E3xEAAACwIlvqK0Quu+yy/OQnP/nUfnPmzMk+++yTd955J127ds1dd92VOXPmZNSoUdl8883zhz/8IX/5y1/mu+6NN97IN7/5zcyZMydbbLFFRowYkbq6ujzwwAPp1KlTTj311IwePXppvDUAAABgBbXUApGZM2fmiCOOyOmnn55u3bp9av/rr78+r7zySioqKnLnnXfmgAMOSIsWLbLBBhvkjjvuSFVVVQYMGJD6+vpG1/3kJz/JzJkzs9pqq2XYsGHZbLPNUllZmT333DNXXnllZs6cmTPPPHNpvU0AAABgBbTUApFzzjknQ4YMybbbbptnnnnmU/tfd911SZL99tsvX/nKVxq1rbPOOjnwwAPz/vvv53//93/Lr0+cODF/+9vfkiRnnHFGunbt2ui6I444ImuuuWaGDh2ampqaz/uWAAAAgC+IpRaIVFZW5txzz82TTz6Z1VdffaF9p06dmpdeeilJcuihhzbZZ5999kmSRhulPvXUU+XNVg855JD5rqmqqkrfvn0zc+bMPP7445/pfQAAAABfPFVLa+Bzzz03LVu2XKS+b7zxRvn77bffvsk+m266aZJk1KhR813XrVu3rLXWWp963Z577rlI9TRo2Nx1QWpqajJq1KisttpqWWWVVVJVtdT+OgEAAKCw6urqMmnSpCRJnz590qZNm8895lL7BL+oYUiSfPDBB+VrFnQCzaqrrpokjY7tbbhu/fXXX+DYTV23qBYUsgAAAADLxzPPPJOtt976c4+z1E+ZWRS1tbVJkg4dOqRFixZN9uncuXOSZPz48fNd19C2qNcBAAAAxdYsnvFoCEHatm27wD6tWrVKksyaNetzX7eoxo0b96ntO+ywQ5J5CdUaa6yx2HMAAAAACzd+/Phss802SZJVVllliYzZLAKR6urqJP8/vGhKZeW8xSwzZ8783NctqkU5LrjBGmussVj9AQAAgMW3pPbvbBaPzDQ81vLee+8tsM/UqVOTJKVSab7r3n333cW6DgAAACi2ZhGIrL322knmPdby/vvvN9lnwoQJSZL27dvPd93o0aMXOHZT1wEAAADF1iwCkZVXXrkcbjz77LNN9hk+fHiS/x+CJMlWW22VJHnzzTfz4YcfLvJ1AAAAQLE1i0AkSfr27ZskGTJkSJPtw4YNS5JsueWW5dd69uyZXr16pa6uLrfffvt819TX1+fhhx+e7zoAAACg2JpNIHLcccclSf7yl7/k+eefb9Q2atSo3HnnnUmS/fbbr8nrzjvvvEyfPr1R280335z33nsvVVVV2WuvvZZO4QAAAMAKp9kEIjvttFN23HHH1NXVZd999829996b2traPPLII9l7770ze/bs9OrVK1//+tcbXffd7343nTp1ytixY7PnnnvmxRdfzIwZM3LDDTfk+9//fpLkyCOPzOqrr7483hYAAADQDDWLY3cb3Hrrrdl5553z9ttvZ999923U1qZNm9x8881p2bJlo9dXWWWV/OlPf8pBBx2U4cOHZ7PNNmvU3rNnz1xyySVLvXYAAABgxbHMVoiUSqWUSqX06NFjgX26d++eZ599Nscdd1xatWpVfn2bbbbJ448/nh133LHJ6/bee+8MHz48u+66a/m1ysrKHHLIIfnXv/6VVVZZZUm9DQAAAOALoKJUKpWWdxFNmTZtWv7zn/9klVVWSffu3Rf5uvfeey/vvvtu1llnnXTt2nUpVpi88847WWuttZIk48aNS7du3ZbqfAAAAFBES+Pzd7N6ZOaTOnbsmC9/+cuLfd2aa66ZNddccylUBAAAAHxRNJtNVQEAAACWFYEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACF0ywDkX/+85/ZZ599ssoqq6RVq1bp1q1bdt1119x4442pr69v8prp06dn4MCB6dWrV1q3bp0ePXrk7LPPTm1t7TKuHgAAAGjuKkqlUml5F/FJ1157bb7//e+noazKysrMnTu33N63b9/8/e9/T3V1dfm1qVOnZpdddsnIkSOTJBUVFeXrv/rVr+aBBx5IVVXVEq/1nXfeyVprrZUkGTduXLp167bE5wAAAICiWxqfv5vVCpHXXnstp556alq2bJnBgwdnypQpmTNnTt5+++1ceOGFqaqqyrBhw3LppZc2uu6www7LyJEjU11dnRtvvDE1NTUZN25c+vbtm4cffni+/gAAAECxNatAZMiQIamrq8t3v/vd9O/fP507d05lZWXWWmutnHnmmTnllFOSJHfffXf5mqFDh2bYsGFJksGDB6dfv37lx2xuu+22dO7cOeecc04++OCD5fKeAAAAgOanWQUi7777bpJkvfXWa7J97bXXTpLMmjWr/Np1112XJOnTp0+OOuqoRv07duyY/v37p6amJvfee+/SKBkAAABYATWrQORLX/pSkiwwvLjnnnuSJFtttVX5tSeeeCJJcuihhzZ5zT777JMkue+++5ZYnQAAAMCKrVkFIkcddVTatWuX+++/PyeeeGL+85//ZNasWRk1alT69euXf/7zn6murs5pp52WJJk0aVKmTZuWJNl+++2bHHPTTTdNkowaNWrZvAkAAACg2VvyR698Duuuu27uu+++fOtb38p1111XfhymwYYbbpgbbrghffr0SZJG+4Ksv/76TY7ZpUuXVFVVZcyYMYtdzzvvvLPQ9vHjxy/2mAAAAMDy16wCkST56KOPUlNT02Rb27ZtG4UQtbW15e87d+68wDE7deqUyZMnp7a2Nq1bt17kWhqO9AEAAAC+WJrVIzOPPvpoDjjggHLo0bNnz+y8887l84Wfe+65HHzwwbn44ouTJC1atChf27Zt2wWO26pVqySNN2MFAAAAiqtZrRD54Q9/mPr6+qy55pr505/+lF122SVJMnfu3PzlL3/JSSedlA8//DCDBg1K//79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nNTV1eXhhx/OzjvvnDfeeCNt2rTJGWeckSQ55phjUllZmaeeeip33313o/EmTZqUwYMHJ0n222+/Zf5+AAAAmiuBCDQjlZWVuf3227PJJpvk5Zdfzh577JHWrVunVatW2X333TNixIi0aNEit956a3r27Jlk3sqNww8/PEly5JFH5tZbb82sWbPy3HPPZa+99sqUKVPSqVOn9OvXr9Fcjz/+eNq0aZM2bdrk8ccfX+bvFQAAYHmqWt4FAI2ts846efrpp3Prrbfmz3/+c15//fVMnDgxHTp0yPbbb5+BAwdmxx13bHTN1VdfnVdeeSUjRozI0Ucf3aitsrIy119/fbp06dLo9blz56a2trb8PQAAQJFUlD7POZwF984772SttdZKkowbNy7dunVbzhVRZDNmzMhZZ52V3/72t+VTZXr37p0rrrgie+2113KuDgAA4LNbGp+/BSKfg0CE5mjGjBkZNWpUOnTokPXWW295lwMAAPC5LY3P3x6ZgS+Ydu3alY/iBQAAoGk2VQUAAAAKRyACAAAAFE6zD0RKpVL23HPPVFRUZOedd17gaRjTp0/PwIED06tXr7Ru3To9evTI2WefXT5FAwAAAKBBs99D5JprrsmwYcPSrl273HTTTamsnD/DmTp1anbZZZeMHDkySVJRUZGxY8dm0KBBefLJJ/PAAw+kqqrZv1UAAABgGWnWK0Ref/31nHnmmUmSiy++OL169Wqy32GHHZaRI0emuro6N954Y2pqajJu3Lj07ds3Dz/8cC699NJlWTYAAADQzDXbQKS+vj7HHntsZs6cmT322CMnnnhik/2GDh2aYcOGJUkGDx6cfv36pVWrVunWrVtuu+22dO7cOeecc04++OCDZVk+AAAA0Iw120DkggsuyNNPP50OHTrkhhtuSEVFRZP9rrvuuiRJnz59ctRRRzVq69ixY/r375+amprce++9S71mAAAAYMXQLAORF154IYMGDUqSXHHFFVl77bUX2PeJJ55Ikhx66KFNtu+zzz5Jkvvuu28JVwkAAACsqJrdTqOzZ8/Osccemzlz5qRnz56ZMmVKBgwYkJYtW2abbbbJAQcckFatWiVJJk2alGnTpiVJtt9++ybH23TTTZMko0aNWjZvYAXRY+DQ5V0CsByNuXDf5V0CAAAsV80uELnkkkvy0ksvJUnGjx+fu+66K23bts2LL76YSy65JOuvv37+9Kc/Zauttmq0L8j666/f5HhdunRJVVVVxowZs9i1vPPOOwttHz9+/GKPCQAAACx/zSoQef/993P++ecnmbfi429/+1tWX331JMncuXNz3XXX5Qc/+EF22223/Otf/0pdXV352s6dOy9w3E6dOmXy5Mmpra1N69atF7metdZa6zO+EwAAAKA5a1Z7iPzmN7/JjBkzUlVVlb/85S/lMCRJKisrc9JJJ+WUU07J9OnTc/bZZ6dFixbl9rZt2y5w3IZHbGbNmrX0igcAAABWGM0qEHn44YeTzNsIdUGrMw466KAkyT333JPq6uokSVVVVSorF/xWGtpmzpy5WPWMGzduoV/PPPPMYo0HAAAANA/N6pGZSZMmJUm23XbbBfZZbbXVkiS1tbXlQKSuri4TJkwot/23qVOnJklKpdJi1dOtW7fF6g8AAACsGJrVCpEOHTokmbfnx4JMnz69/P1KK62Udu3aJUlGjx7dZP8ZM2ZkxowZSZL27dsvoUoBAACAFVmzCkQ23njjJAs/Inf48OFJki996UtZaaWVstVWWyVJnn322YX279ChQzp27LgkywUAAABWUM0qENl3332TJDfffHPee++9+dqnT5+eyy+/PEmy//77J0n69u2bJBkyZEiTYw4bNixJsuWWWy7xegEAAIAVU7MKRA4++OBsscUW+eijj7Lnnnvmn//8Z+bMmZO6uro8/PDD2XnnnfPGG2+kTZs2OeOMM5IkxxxzTCorK/PUU0/l7rvvbjTepEmTMnjw4CTJfvvtt8zfDwAAANA8NatApLKyMrfffns22WSTvPzyy9ljjz3SunXrtGrVKrvvvntGjBiRFi1a5NZbb03Pnj2TJN27d8/hhx+eJDnyyCNz6623ZtasWXnuueey1157ZcqUKenUqVP69eu3PN8aAAAA0Iw0q1NmkmSdddbJ008/nVtvvTV//vOf8/rrr2fixInp0KFDtt9++wwcODA77rhjo2uuvvrqvPLKKxkxYkSOPvroRm2VlZW5/vrr06VLl2X5NgAAAIBmrNkFIknStm3bfOc738l3vvOdRerfuXPnPPnkkznrrLPy29/+tnyqTO/evXPFFVdkr732WprlAgAAACuYZhmIfBbt2rXLpZdemkGDBmXUqFHp0KFD1ltvveVdFgAAANAMfWECkQbt2rUrH8ULAAAA0JRmtakqAAAAwLIgEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhrDCByNNPP51WrVpl1113bbJ9+vTpGThwYHr16pXWrVunR48eOfvss1NbW7tsCwUAAACavarlXcCimDZtWo444ojMmTOnyfapU6dml112yciRI5MkFRUVGTt2bAYNGpQnn3wyDzzwQKqqVoi3CgAAACwDK8QKkRNOOCGjR49eYPthhx2WkSNHprq6OjfeeGNqamoybty49O3bNw8//HAuvfTSZVgtAAAA0Nw1+0Bk8ODB+etf/5qKioom24cOHZphw4aV+/br1y+tWrVKt27dctttt6Vz584555xz8sEHHyzLsgEAAIBmrFkHIq+88koGDBiQioqKnH766U32ue6665Ikffr0yVFHHdWorWPHjunfv39qampy7733LvV6AQAAgBVDsw1Eampqcthhh2XmzJn50Y9+lH333bfJfk888USS5NBDD22yfZ999kmS3HfffUunUAAAAGCF02x3Gh0wYEBeeuml7LDDDjn//PPz5JNPztdn0qRJmTZtWpJk++23b3KcTTfdNEkyatSoxa7hnXfeWWj7+PHjF3tMAAAAYPlrloHI7bffnt/+9rfp2rVr/vKXvyzwhJhP7guy/vrrN9mnS5cuqaqqypgxYxa7jrXWWmuxrwEAAACav2b3yMzYsWPzne98JxUVFfnDH/6Qbt26LbBvbW1t+fvOnTsvsF+nTp0yderURv0BAACA4mpWK0Tq6upyxBFH5MMPP8yZZ55Z3v9jQVq0aFH+vm3btgvs16pVqyTJrFmz0rp160WuZ9y4cQttHz9+fLbZZptFHg8AAABoHppVIPLzn/88//rXv7LjjjvmvPPO+9T+1dXVSZKqqqpUVi54sUtD28yZM9OpU6dFrmdhq1MAAACAFVezeWTmoYceykUXXZSVV145Q4YMWeC+IZ/U8JhMXV1dJkyYsMB+U6dOTZKUSqUlUywAAACwQms2K0RuueWWlEqlTJ48eaGbmT722GOpqKhIktx0001p165dZsyYkdGjR2e11Vabr/+MGTMyY8aMJEn79u2XTvEAAADACqXZrBBp2bJlWrduvcCvli1bJkkqKirKr7Vo0SJbbbVVkuTZZ59tctzhw4cnSTp06JCOHTsumzcDAAAANGvNJhAZPHhwampqFvj14IMPJkl23nnn8mvHHHNM+vbtmyQZMmRIk+MOGzYsSbLlllsumzcCAAAANHvNJhD5rI455phUVlbmqaeeyt13392obdKkSRk8eHCSZL/99lse5QEAAADN0AofiHTv3j2HH354kuTII4/MrbfemlmzZuW5557LXnvtlSlTpqRTp07p16/fcq4UAAAAaC6azaaqn8fVV1+dV155JSNGjMjRRx/dqK2ysjLXX399unTpspyqAwAAAJqbFWaFyK677ppSqZRHH310vrbOnTvnySefzGmnnZZ27dqVX+/du3fuvffeHHLIIcuwUgAAAKC5+0KsEEmSdu3a5dJLL82gQYMyatSodOjQIeutt97yLgsAAABohr4wgUiDdu3alY/iBQAAAGjKCvPIDAAAAMCSIhABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAzc5HH32UgQMHpmfPnqmsrEyLFi2y0UYb5Zxzzkltbe3yLg8A+AIQiAAAzcr06dOz44475qKLLsqYMWOy9tprp2vXrnn11Vfzi1/8Ittvv31mzZrV5HUDBw5Mr1690rp16/To0SNnn332UgtQnn/++Rx44IHp2rVrqqurs8MOO+S+++5bKnMBAEueQAQAaFZ+8IMf5KWXXsrmm2+eV199NWPGjMmECRPyt7/9Le3bt88LL7yQ888/v9E1U6dOLYcob731VubMmZOxY8dm0KBB2WeffVJXV7dEa7zvvvuy3Xbb5a677sqUKVNSW1ubf/3rX9l3331zww03LNG5AIClQyACADQbI0eOzE033ZSOHTvm3nvvTe/evZMkFRUVOfDAA/Pzn/88SXLLLbc0uu6www7LyJEjU11dnRtvvDE1NTUZN25c+vbtm4cffjiXXnrpEqvxjTfeyDe/+c3MmTMnW2yxRUaMGJG6uro88MAD6dSpU0499dSMHj16ic0HACwdAhEAoNm48847U1VVlVNOOSVrrLHGfO2bb755kuS9994rvzZ06NAMGzYsSTJ48OD069cvrVq1Srdu3XLbbbelc+fOOeecc/LBBx8skRp/8pOfZObMmVlttdUybNiwbLbZZqmsrMyee+6ZK6+8MjNnzsyZZ565ROYCAJYegQgA0GycddZZmTlzZn72s5812f7OO+8kSVZfffXya9ddd12SpE+fPjnqqKMa9e/YsWP69++fmpqa3HvvvZ+7vokTJ+Zvf/tbkuSMM85I165dG7UfccQRWXPNNTN06NDU1NR87vkAgKVHIAIANCstW7ZM69at53t9zpw5+c1vfpMkOeCAA8qvP/HEE0mSQw89tMnx9tlnnyRZIhuePvXUU5k7d26S5JBDDpmvvaqqKn379s3MmTPz+OOPf+75AIClRyACADR7r7zySvbbb78899xz6d69e84+++wkyaRJkzJt2rQkyfbbb9/ktZtuummSZNSoUZ+7jjfeeCNJ0q1bt6y11lpLfT4AYOkRiAAAzdYf/vCH9OrVKxtvvHEefPDBfPnLX85jjz1WflTlk/uCrL/++k2O0aVLl1RVVWXMmDGfu56G+RY0V5KsuuqqSbJE5gMAlh6BCADQbNXV1eXjjz8u/3nChAl58cUXy3+ura0tf9+5c+cFjtOpU6dMnTq1Uf/PouH6hc3V0DZ+/PjPNRcAsHQJRACAZuv444/PhAkT8swzz2T//ffPuHHjcuCBB+aee+5JkrRo0aLct23btgscp1WrVkmSWbNmfa56GuZbFnMBAEuXQAQAaPa23nrr/P3vf8/++++f+vr6fPe73019fX2qq6uTzNvMtLJywT/WNLTNnDnzc9XRMF9D6LE05wIAli6BCACwQqioqMiPf/zjJMl7772XV199tfx4Sl1dXSZMmLDAa6dOnZokKZVKn6uGhvnefffdpT4XALB0CUQAgGajrq4ur7zySurr65tsX3fddcvff/TRR+nSpUvatWuXJBk9enST18yYMSMzZsxIkrRv3/5z1bf22msvdK4k5WDm884FACxdAhEAoNnYaqutsvHGG+fOO+9ssv3tt98uf7/aaquVr0mSZ599tslrhg8fniTp0KFDOnbs+LnrS5I333wzH3744ULnawhPAIDmSSACADQbe++9d5Jk4MCBTQYOV111VZKkR48e6dWrV5Kkb9++SZIhQ4Y0OeawYcOSJFtuueXnrq9nz57p1atX6urqcvvtt8/XXl9fn4cffniJzQcALD0CEQCg2Tj11FPTsWPHvPnmm9lll13y8MMPZ9asWZk2bVrOPvvs3HrrrUmSQYMGla855phjUllZmaeeeip33313o/EmTZqUwYMHJ0n222+/JVLjcccdlyQ577zzMn369EZtN998c957771UVVVlr732WiLzAQBLh0AEAGg21lxzzfz1r39Nu3bt8uKLL2b33XdPu3bt0qlTpwwaNCiVlZU599xzc8wxx5Sv6d69ew4//PAkyZFHHplbb701s2bNynPPPZe99torU6ZMSadOndKvX79Gcz3++ONp06ZN2rRpk8cff3yRa/zud7+bTp06ZezYsdlzzz3z4osvZsaMGbnhhhvy/e9/v1zH6quvvgT+RgCApaVqeRcAAPBJDSHDhRdemPvvvz/jx49P586ds8suu+T000/PdtttN981V199dV555ZWMGDEiRx99dKO2ysrKXH/99enSpUuj1+fOnZva2try94tqlVVWyZ/+9KccdNBBGT58eDbbbLNG7T179swll1yyyOMBAMuHFSIAQLOzzjrr5Prrr8/bb7+dOXPmZOLEibntttuaDEOSecfhPvnkkznttNPKp84kSe/evXPvvffmkEMOme+aXXfdNaVSKaVSKbvuuuti1bf33ntn+PDhja6rrKzMIYcckn/9619ZZZVVFms8AGDZs0IEAPhCaNeuXS699NIMGjQoo0aNSocOHbLeeusttfk222yzPPLII3nvvffy7rvvZp111knXrl2X2nwAwJIlEAEAvlDatWtXPh53WVhzzTWz5pprLrP5AIAlwyMzAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcKqWdwEAsDz0GDh0eZcALGdjLtx3eZcAwHJkhQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAA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AAAKRyACAAAAFI5ABAAAACgcgQgAAMAKZPjw4enXr1969eqV1q1bZ7XVVsshhxySp556aonNUVFRschfxx133BKbF5YlgQgAAMAK4kc/+lG23377/P73v89bb72V+vr6TJw4Mbfffnt22mmn/OQnP1ki87Ru3fpTvyor532cbPhfWNH4fy4AAMAK4Oqrr86ll16aJOnfv3/Gjh2bOXPmZNSoUTnggAOSJBdeeGEuv/zyzz1XTU3NQr8mTZqUVVZZJUly7LHHfu75YHkQiAAAADRztbW1Oeecc5Ikhx56aAYPHpy11147FRUV2WCDDXLHHXdkt912S5IMGjQodXV1S7WeCy64IBMmTMjBBx+cXXfddanOBUuLQAQAAKCZe+SRR/LBBx8kSX7+85/P196iRYt8//vfT5J8+OGHee2115ZaLWPHjs3ll1+eNm3a5JJLLllq88DSJhABAABo5v7zn/8kSbp27ZpNNtmkyT5rrbVW+ftp06YttVrOPPPM1NTU5PTTT0+PHj2W2jywtAlEAAAAmrlWrVolSaqrqxfYZ9KkSeXv11xzzaVSx8iRI/PXv/41HTp0yI9//OOlMgcsKwIRAACAZq5hJca7776biRMnNtnniSeeSJJssMEGS23lxgUXXJBSqZSTTjopHTt2XCpzwLIiEAEAAGjmdt5556yyyioplUo577zz5msfNWpUfv3rXydJTjzxxKVSw1tvvZW//vWvadOmTQYMGLBU5oBlSSACAADQzFVXV+fGG29MVVVVrrrqqvzoRz/KuHHjMn78+Nxyyy3ZY489MmvWrKy++urp37//Uqnh4osvTn19fY477risttpqS2UOWJaqlncBAAAAfLr99tsvTzzxRH784x/n0ksvzaWXXjpfn0GDBqVdu3ZLfO6PPvoof/jDH5IkJ5100hIfH5YHK0QAAABWENttt12eeOKJTJo0Kf/+97/z73//O927d0+SbL755vn2t7+9VOYdMmRIZs2alc022yx9+vRZKnPAsiYQAQAAWMGsvPLK+fKXv5xXXnklY8eOTUVFRa666qpUVi6dj3g33XRTkuSYY45ZKuPD8iAQAQAAWAHNnj07Z599dpJ5QcVOO+20VOYZNWpUhg8fnhYtWuTII49cKnPA8iAQAQAAWAFdc801GTNmTDp16pRf/epXS22ev/71r0mSrbfeOmusscZS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VFRULOdKYPmzQgRWQLW1tdl///1z2WWX5fXXX1/e5WT06NFZY401ssYaa+T5559f3uUAy8HTTz+d8ePHL/FxL7zwwhx99NG54447lvjYi6pUKuXAAw/MOeeck7lz5y7RsT/66KO8/vrrmTp1avlDCvDFMmXKlEydOjUzZ85MXV3dEhmzrq4uH3/8cSZPnrzY115yySX5xje+kWnTpi2RWhqUSqW89NJLmThx4hJ7n7C0CURgBTRixIjcc889Of300/Pyyy8v73LSunXrJr8HvrgmTZqUoUOH5owzzshGG22U7bbbLgMGDFji8zz99NO59dZb8/7775dfmzNnTqZMmbJEP1wszKWXXpq77747v/jFL/LjH/+4UR2f1wsvvJANNtggXbp0ye233/65xwOan4MOOihdunRJu3bt0rJly1RUVHzur5YtW2allVbKl7/85cWqZfjw4fnpT3+af/zjH9lrr73K97ElcT9Lks022yyrrbZafvCDHyyR8WBp88gMrIAeeuihJEn79u2zzz77LOdqBCLwRff888/nrrvuysSJE/Pmm2/mlVdeyXvvvdeoT8eOHfPxxx/nvffey6233pobbrhhkcY+8sgjc9ZZZy2wveGestJKK5Vfe+6557L99tsvcv377rtv7rnnnkXu/0lDhgzJwIEDkyQ/+clPcu655yZJXnnlley111758Y9/nFNPPfUzjZ3Mu4836NOnz2ceB1gxNIQZC3pcZe7cueVwYmE/U82ZM2exV6y9/PLLOeCAA1JXV5evfe1r+dOf/pSWLVvmo48+yl577ZWNN944V155Zdq1a7dY4zaoqKhI27Zt8/HHH7ufscIQiEAzU1tbm+nTp6e6ujqtW7dOVdX8/5nefffdSZLdd9/9UwOIUqmU2tra1NbWpqamJiuvvHJatGiR119/PRtssMFCr91rr71y//33f2rNn6yxqXqBFVunTp3KQUAy74fe1q1bp7a2NieffHK+853vZJNNNkll5byFpx9//HFee+21RRr7o48+Wmh7wz2lVatW5ddatGiRlVdeOW3bts3MmTMzefLkrLzyyunYsWOja8eNG5fZs2dnu+22W6Ra/tuf//znHHPMMamsrMwNN9yQb33rW+W2IUOG5J133skPfvCDPPjgg/nDH/6QLl26LPYcn3xfa6+99meqE2je7r777lRUVKRVq1aN/ptvyqmnnpqrrroqG220UUaOHFm+rzalrq4us2bNWqQaXnrppey+++6ZOHFiTjzxxFx11VXlfZGeeOKJjBgxIsOHD88TTzyR2267LZtuuumiv8FPaHh/7mesKHxygWbmkUceyd57771Iff/+978v9oZYo0ePTo8ePRoFF927d2/05w8++CAffvjhp/6j3eCT/1gv7B9uYMW0zjrr5MILL0yXLl3Sp0+fbLLJJjn55JNz8803Z8cdd5zvB+eGoPbss8/OOeec0+SYAwYMyJVXXvmZVpVtvfXW5Y2cr7zyygwYMCBnnXVWTjnllEb9unbtmilTpmTbbbddrPHr6+szaNCgnHvuuenQoUNuv/327LHHHo36DBo0KBtuuGGOP/74DB06NFtssUXuuOOOxV6+XlNTk2Teh4i2bdsusN/rr7+e2bNnL7C9RYsW2XDDDRdrbmDZ+OQKt4V59dVXc+211yZJzjvvvE/9maqqqmqRxv7b3/6Wfv36Zfr06bnoootyxhlnNGrfd999M3z48Hz961/P66+/nu222y7XXnttoxB4UTXc0zp37rzAPu+++26mTp260HHWXXfdtGnTZrHnh8UlEIFmpkWLFunQoUP5OdP/PrFl4sSJmT59eqqqqtK9e/dFGrOuri6zZ8/OjBkzyv+4fnLcRx99ND169Cj/eeDAgbnooovSsmXL1NfXZ8aMGWnVqlVatmzZ5CkL/x2I1NfXp6amprx0EljxnXnmmYvcd3FWiv133zlz5qSysnKhJ7rU1dWlRYsWqaioyMyZM5Nkvnvl6NGjM2XKlFRUVGSbbbZZ5Hruueee/PznP8+IESOSJIceemieffbZPPXUU5kzZ07q6+tTX19f/s1s7969M2LEiLz99tvZeeed8/vf/z6HHnroQmv/5HueMWNGkqRDhw4LrWufffbJm2++ucD2lVdeuRwSASumAQMGpK6uLl/5yldy4IEHfu7xXnzxxZxzzjm58847k8xbWVwqlTJo0KDMmTMndXV1mTt3burq6lJTU5ONN944b7/9dmbNmpXjjjsuL730Ui6++OIF/vKtVCpl7ty55ft1qVQqr1hZ2D3t7LPP/tTHKl966aVsvPHGn+Vtw2IRiEAz07dv3wXu+j1t2rSsv/76mT59ek488cT8+te//szzLMoHlqqqqowcOTJbbLFFo9cbPqw09ZuL9dZbL/X19UmS7373u7nuuus+c43AimlxVor99w/a3/nOd3LzzTenRYsWad26dflZ+uOPPz7f+c53Mnv27MyePTv/+c9/su6665YDkf9eafLcc88lSXr37j3fozQL8/jjj5fDkCQZPHjwAvu2bNky1dXVWWWVVfLRRx9l1qxZOeKII1JdXZ3999+/yWuGDBmSE044IV26dEmbNm3K9U+dOjXrrrvufP332GOPXHfddeUVextttFGqq6vL7bNnz87IkSMXeUUf0DzdeOONefDBB5MkP/zhD5fImO+88045DEmSf/7zn/nnP//ZZN8WLVqkuro6Xbt2zZw5c/LRRx/lkksuSZL86le/avKad999Nz179swqq6xSvi81nJa1zz77zBdUr7TSSnnhhRfK96u11lorq666aqM+I0eOzOzZs93TWGYEIrAC+fnPf56JEyembdu2+elPf/q5xvrvf6Sa0vAb2IYPJlVVVWnZsmUqKyvLXw0fZho2WOzcuXPmzJmTmpoaj88Ai63hB/I2bdqkZcuWGTNmTJJ5+5i0bds2c+bMyccff9xov5Ik820C+OyzzybJYu8fctJJJ+X111/PxhtvnC996UtZddVVM2nSpJx00kmprKzME088kT59+qRt27aNVrGMGDEie++9d7bccsv07dt3oXPMmjUr7777bqPX6uvrm1wB0rC6peHDwa233prNN9+83D5mzJj07NnThwdYgY0bN65RCPLJ0PPz2HvvvXP44Ydn9dVXT/fu3bPqqqumY8eOOfLII/PRRx/l0ksvzfHHH5+2bds2uodMmTIl+++/f95///2cfPLJC52jrq6uySPX33777fleW2ONNZL8//vZaaedNt/pZD169MjYsWPd01hmBCKwgnjsscdy9dVXJ0m+//3vZ/XVV/9c4y1KWFFZWZnNNtvsU4+1/Pjjj8vPsP773/9u9PgNsOJreNa7devWadWq1XwrzBpORZg1a9ZCH3VZFNdee235GfqnnnoqO+20U5Lksssuy+GHHz5f/4ZNWT95Wkvy/1eILO7+IT169Mhdd93V6LWDDz44SdK/f//ssMMOTV63+eab59///ndWXXXVhf4gf/DBB2efffZJu3bt0rp161xzzTU5+eSTs+uuu+aRRx4p97vooosycODA8rLzT/tw4MMDrJhmz56dww8/vMkNpufMmZMjjjgip59++mKdrNWgoqIif/7znxu9dtVVV+Wjjz7KxhtvnFNPPbXJFcNdunTJQw89lA8//LAcYjRljTXWyMSJE9OuXbu0bds2L7/8cnmD7bq6uvIvzZ5++ulst912i3w/W9Q+sCQIRGAFMHny5Bx77LHlZYi/+tWvFrh8sSlf+9rXct999zV6bVE2Y/28H2yAL4ZjjjkmQ4cObbLtiCOOyBFHHFH+8wUXXLDETpt69NFHP7XP9OnTk8y/aWFDIPK9730v3/ve95Ikp59+enkJeIPNNtsskyZNKq+C++/7XqlUyuuvv54kuf/++9O7d+9Pralhj5EZM2bkj3/8Y/baa69yW3V1daPf/jY8ItmpU6dGY/z365/24WBRVv0Bzc/3v//9/O///m+6deuWjz/+OB9++GG57Re/+EXuuOOO3H///bnzzjs/dfXZSSedlDvuuCPV1dXl+9l//7w3duzYJMmECROyySabfGp9DXuMzJo1K/3792904liLFi2yyiqrlP/ccN/q0KFDo3kX936WuKex7AhEoJmbM2dODj/88PLSwx49eizyqQyTJk3KlClTmlx6+ckVIj179mzy+sU9wQb4YmrTpk06d+5cXiFSUVFR/qF61VVXTbt27VJfX5/Zs2enurq6vO/H5/Xfx37X1NSkVCo1uqc1bCT65JNP5itf+UqSZPz48Vl11VXLz6a/9dZbmTNnTpOPz0ybNq3J5d5NaWoJ+Kf5tL+LhtU3Xbt2na+uZP6gBPjiOO+88/K73/0urVu3zh133JGDDjqoUSDy4x//OPfff3+ee+657LfffhkyZMhCN1udOXNmJk6cuEhzT548OZMnT16sej/tiF/3M1ZEHvCHZmzu3Lk57rjjGm2Adeedd2bUqFGL9PWd73wnyfybDSaNw47u3bunV69e5a+m/sEaM2ZMTjrppNx0001L/o0Czdrtt9+eKVOmZPz48Rk7dmyuuuqqctuVV16Zt956K2PHjs348ePzgx/8YKHHw/63BQUG77zzTv73f/+3/Oc33ngj22+//XzHRTaEGVdddVVqa2uTzFvG3XAffO6558r3u6Yed3nmmWcyadKkTJs2LTNnzkx9fX1KpVLefPPN8mqQr371q/n4449TKpUafX37299Okuy2226ZNm1a+fWGfZQmT578qb/R/eCDD5Ikq622WqPXfYCAL7YLLrggP//5z5PMe1SwqdOwOnbsmAceeCCbbLJJZs+enUMPPTRDhgxZ4JhXXHFFJkyYkKlTp2bGjBmZM2dOSqVSZsyYkW984xtJ5m1k+tprr813P/vjH/9Ybn/llVfKr9fV1aW2tjYffvhhzj777IW+J/czVkQCEWimamtrc/jhh+dPf/rT5350panl659cIfLoo4/mjTfeKH9997vfna//oEGDcu211+aMM8741LPjgS+2P/zhD43+/Pzzz5cf6UuyWIHIgvpef/31mTt3bvledcstt2TEiBG55pprGj1K07Ch8/jx4/P73/9+vnEee+yxzJ49O+uuu27WXHPN+dpXXXXVrLzyyunQoUOqq6tTWVmZoUOHZrvttsuoUaOy//77Z+jQoeVNW1955ZVsu+22efbZZ3Pttddmt912yyOPPJJddtklb7zxRpJ599zWrVuna9eun7qi75133kmSdOvWrdHrPkDAF9PcuXNz+umnlzfH/9WvfpV+/fotsH/Xrl0zbNiw9OrVK3V1dTnqqKNyyy23NNm3U6dOWXXVVcubUFdVVWXUqFHZeeedc9ddd2W99dbLE088kfXXXz9J8uGHH+Yb3/hGrr/++hx99NH52c9+lnHjxmWnnXYqn3jTokWLtGrVKh07dpzv0cT/5n7GikggAs3QRx99lL333ju33XZbKisrc80115TbDjzwwPTu3XuRvhqOi2wqUJk7d+5i1XTxxRena9eumTx5cvk3GkDxjB07Nv/4xz/Kf77mmmuyzTbbNDoGvGGlxq9//eusu+66TX41hBcNfT9pzpw5+d3vfpeKioryYzC/+MUvsuWWW6ZUKqV///6ZNWtW3nrrrUyfPj3dunVLZWVlzj///PkCloceeihJPnWlRjLvkZhDDz00++23X6ZMmZJzzz03d911V/l43IsuuijbbLNNnnnmmey999557733cvfdd2efffbJiBEjsummm+aiiy5arECo4WSZddZZp9HrPkDAF8/06dNz8MEH57LLLksy75dNP/rRjz71utVXXz3Dhg3LmmuuWV49/Ne//nWh13z88cc566yzstlmm+W5557LN7/5zTz77LPp3r17SqVS/vrXv2aLLbbI3//+95x44om5++67c+655+bss8/OlClTstdee+W4445brMdq3M9YEQlEoJl55pln8uUvf7l82sA111xTPuEgmffoymuvvbZIX1OmTFngPPX19YtV18orr5xf/OIXSeb95rap4yGBL76f//znmT17dnnvoQ033DD19fUZOHBgRo4cmeT/r/qYOnVq3nzzzSa/Gn5Abio8+MMf/pDx48fna1/7Wvk3ja1bt87vfve7VFZWZvz48Rk5cmSef/75JPOC4qOPPjpvv/12o8d5kpR/y7nvvvsu8D299NJLOf7447PuuuvmtttuS+/evfPII4/kZz/7Wd59991ccMEFWWeddTJw4MDMmDEj+++/f/7xj3+ke/fuqaysLH+gmDVrVgYOHJhevXrlsssuK7/HBampqSkfK7zhhhs2avMBAr5YRo4cmW233TZ33XVXKisrc9VVVy3WL5h69uyZBx98MJ06dUp9fX2OOuqo+U7ESuZtlvqLX/wi3bt3z7nnnpt27drl+uuvz2233ZaKior8/ve/zxZbbJHDDjssY8aMyWabbZYhQ4Zk7733zqxZs3LOOefkhhtuSJs2bXLzzTenR48eGTBgQPletTCjRo1K4n7GCqYENBvXXnttqaqqqpSklKR0wQUXlEqlUmnSpEnl11544YVFHu/MM88sJSl961vfmq/tk2OOHj26yeuOPfbYRq9//PHHpU6dOs3XNn369AWOBXxxPPPMM6XKysrSFltsUfrWt75VSlK67bbbSieccEIpSalPnz6lmpqazzXHrFmzSmuttVYpSen+++8vHXXUUaUkpTvvvLNUKpVKF110Uemll14qlUql0imnnFJKUrrppptK48aNK1VXV5c6duxYGj9+fKlUKpVeeOGFUpJS586dS7W1tfPN9d5775W23HLL8v1rpZVWKp177rmlYcOGlc4777zSLrvsUqqoqCglKbVo0aL0zW9+s/Tcc8+VSqVSqaampnTaaaeV1lhjjXI9f/vb30pdu3Ytj9eyZcvS8ccfX6qrq2vyvT711FOlJKVVV111vrbu3buXkpReffXVUqlUKu24445N/hswevToUpLSxhtvvPh/2cBSN2PGjNKgQYNKrVq1KiUptW3btnTXXXc12fdLX/pSKUnpvvvuW+B4jz76aKl169alJKVWrVqVHn744VKpVCrNmTOndOSRR5YqKytLSUqVlZWl448/vvTQQw+VrrrqqtLBBx9cqq6uLt+ftttuu9Lf/va30ty5c0ulUql00003lbp06VL685//XCqVSqWRI0eWNt1003L/JKUddtih9P777zdZ1+zZs0tt27YtJSm9/PLLjdoa/r249tprS6VSqfQ///M/pSSlyy+/fL5xGu59kyZNWvhfLCwhVohAM3LIIYdk2223TWVlZX77299m4MCBS22uRVkh8t992rVrl7POOivXX399fvOb3yyt0oBmaNasWTnmmGMyd+7c/M///E+jtl/+8pfp0KFD3nnnnbz88svl1//zn/80OVbpE/uN/LfLL78848aNy5ZbbtnouNoGZ5xxRjbeeOMkKf92dPvtt0+3bt0ycODATJs2Lf3790+pVMq1116bJPnWt77V5DGPa6yxRi677LJ07do1P/nJTzJmzJgMHDgw55xzTn72s5/lscceS8+ePfOLX/wiY8aMyW233ZYtt9wyjz76aL785S/nsssuy/jx43PUUUdl1qxZOfDAA/PSSy/l2GOPTUVFRdZdd91cfPHFC9wH6rHHHkuSbLvttvO1+Y0qfDE8//zz5UfpNtxwwwwfPjwHHHDAZx5vl112yY033pgk2WabbbLVVlslmbd30SWXXJIePXrk8MMPz8svv5wbbrghDz74YE455ZTccccdadOmTU488cQ8++yz+de//pUDDzwwb731Vg488MD069cvU6ZMyfe+972MGjUqm2yySZ555pnyKpPq6ur8+te/nm/D1AbPPvtsZs6cmY4dO1ohwgrFsbvQjHTt2jX33HNPnnzyyey3335Lda5P7iGy6667Ntp4tWGX8Kb2GfnhD3+4VOsCmqdTTjklr732WrbZZpscdNBBufvuu8ttK6+8cq699trsuOOO6d69e5J5eyFtv/322X///XP11VeXNyWdOHFiDj/88Jx88sk56KCDGs3x/vvv54ILLkiST11K/sQTT2TcuHHZYIMNssEGGyRJfvrTn+a+++7L0KFD893vfje///3vU1lZmRNPPHGB4+yyyy4ZP358WrZsWX5tyJAhufrqq3PQQQc1Ovnhscceyy9/+csMGzYsybxA5ayzzkr//v1TVVWVBx98MDvttFNuvvnmnHTSSWnXrt18x09+UsOxwjvvvHOj10ulUj766KMkPkDAim6nnXbK4MGD8+CDDza6F34eRx55ZOrr63PwwQenbdu25dcbTtj65P3sl7/8ZaqqqrLDDjukb9++5XD49ddfz2WXXZYbbrghdXV1adOmTU455ZQMHDgwXbp0ycsvv5xWrVrlZz/7Wfr165eXXnqpHL40peF+ttNOOzU6yTARiNC8CUSgmenUqdNCw5AttthiiczzydUfY8eObbJPXV3dEpkLWLENGjQoN9xwQ1q0aJFrr712vh92k3k/oH/SpZdemg8++CC33nprfvjDH2bTTTdNkpx33nl55JFHMmLEiGy99dZZa621Gl239tprp7q6unxE5IL86le/SpJGeyxVVVXl1ltvzeabb17eVProo48un6iwIJ/88JDMOyHhwgsvTJL83//9X/7xj3/kj3/8Y3nFy+qrr54f/vCHOfnkk9O2bdvU19fnvPPOy1lnnZVdd90199xzT5OrPj5pzJgxeeKJJ5IkX/va1xq1ffzxx5k7d25at26dNm3aLHQcoPk74ogjcsQRRyzRMY855pgmX//v+1lVVVV++ctfJknGjRuXe+65J3/+85/L9582bdrkhBNOyE9/+tN86UtfSpLcfffdOeaYY9K+ffs8+uijWXfddcttTSmVSuWTb/77fpYIRGjeBCKwgunRo8enHuPYYNKkSQvcWPWTgcjo0aPTo0eP8p8HDhyYiy66SCACpL6+Pq+//nqSeY+rbLnllp96zdixY8unKPzsZz8rhyFJcv755+f+++/Pf/7znxx55JF59NFHy4+UrL766nnssccyevTohY7/7LPP5p577klFRcV8HwrWWGON9O7dO//+97+TNP04ysL86le/yuuvv5633norL7zwQqNjxnfcccd85zvfyeGHH16+Dz/33HM5+eSTM3z48CTzlsffd999jYKaptx8880plUpZb731sskmmzRqW9iHhzFjxjQKSd59990kC38MCSimO+64Iw8//HDefvvt/N///V/GjRtXbuvVq1f69++fb3/721lllVWSzDu+fODAgeWj1T/++OPccMMN5ZV7C/L444/nrbfeSmVlZZOPAy3onjZx4sTyRqwN5syZk8Q9jWVHIAIrmDvvvDObb775IvVtCDaasih7iNTU1CxOacAXUIsWLXLLLbfk0EMPbfI3f0054YQT8vHHH+fLX/5yfvrTnzZqa9++ff74xz9mxx13zJNPPpnzzjsvZ599drm9a9eujR4zafihuOF/58yZk+OPPz6lUin7779/evfuXe47a9asHHDAAfn3v/+dFi1apL6+PgMGDEjHjh0X+NvU/7bhhhvmjDPOKL/3HXbYIfvtt18OP/zw8sk6ybzTFM4999z8+c9/TqlUSseOHTNgwID88Ic/TMeOHRc6x4wZM8rHqR9//PHztS/scZkDDzywyTEbPkQAK64lHQJss8026d+/fz788MMkSe/evbPPPvvk0EMPbRQWf/DBB7n88stzxRVXZMaMGWnRokWOPvronHXWWfMdoduUiy++OMm8483/e9VfsuB72gUXXLDAsMU9jWVFIAIrgM+6UmNh/7A2tT9Ig/79+2ePPfZY6LPvizoP8MXw9a9/fZH6XXXVVXnwwQfTrl273HLLLY32J2qw7bbb5rTTTsuvfvWrnHfeedl3333z5S9/ucnxGo7l/fjjj5PMW6UycuTIVFZWlpeBJ8nbb7+dAw88MM8//3xWWmml3H///bnpppvyu9/9Lscee2yeffbZXHTRRZ/6CMp+++2XP/zhD1ljjTWy9dZbNwo36urqcv/99+eGG27IP/7xj8ydOzcdO3bMqaeemh/+8Ifp3LnzIv0dnXfeeZk0aVI6dOiQE044Yb72V199NUnjDw9NHU/8SZ/WDjR/Db+sWpRfWi2KtdZaK7fddlumT5+erbfeunyMeYNnn302N954Y/74xz/m448/TosWLXLsscfmZz/7WdZbb71FmuOBBx7IvffemyT50Y9+NF/7xIkTy3vTNdzTFuV+5Z7GsiIQgRXA4vzD2LAfyJw5c/Loo48mSZPBRsuWLcubY/33Izjrrrtu1l133UWes+GH9yRN7i0AfPE0BLWfDEQfeeSRnHbaaUnmBSMNm5025Re/+EVuv/32jB49OkcffXReeOGFVFdXz9ev4Yfi6dOn58orr8wVV1yRJDn11FPTp0+fzJ07N9dff33+53/+J1OmTMnKK69c3sNj++23T8uWLXPttdfm17/+df7xj3/kvPPOy+GHH77Ak1+S//9sfsPjQk888UQeeuih/POf/8ykSZOSJOuss05OOumknHDCCVlppZUW+e/tqaeeyiWXXJIkGTBgQLp06ZIkuf322/PII49k5syZ5dNzNtpoo/J1tbW1SZIXXnih0SrBMWPGpGfPnn6bCl8ADffVJfnI8h577FH+/r333svw4cPz0EMP5aGHHirvi9S5c+cMGDAgAwYMKG+MvSgmT56c/v37J5m3OXTDXC+++GKuu+661NfX59FHH83cuXPTs2fPciDdcD+7/PLLM2DAgEZj9ujRI2PHjnVPY5kRiMAKYNasWYvc9/HHH8+xxx5b/nNFRUX22Wef+fp17949zz777Geu6ZZbbsnPfvaztGnTJm+//XaSeRtzrbrqqp95TGDFMXPmzCT/f1nz448/nm984xupq6vLUUcdlX79+i30+urq6lx77bX52te+ltdeey1nnHFGrrrqqvn6fTIQadGiRdq3b58111wz5513Xn73u9+V9/xIks033zy33357evXqlWTe/e83v/lN1lhjjZxzzjkZM2ZM/ud//ie77bZb1lxzzUbzjBw5MnfccUcmT56cyZMn5/XXX8+rr77a6NHBlVdeOd/+9rdz5JFHZrfddlvsAPitt97KwQcfnLq6unTr1q38aE4y7zennzzOvFWrVjnppJPm+3tYEB8eYMXXcL/5vI8sT506Nb/5zW8yefLkfPDBBxk9enRefvnlRnsitWnTJl//+tdz+OGH58ADD1zsDZxrampy0EEH5Z133kllZWUuv/zycts666yTm266qdH7+OQphYuy+sM9jWVFIAIrgMX5h3H//fdPRUVF2rdvn6222ionnHBCdt999yVe09FHH52LLrooL730UpJ5v1248MILm/wNL/DF07BJXsNv+i644IJ89NFH2XLLLcsnvHyavfbaK/vtt19ef/31HHXUUU32afjB+aOPPsovf/nLfP3rX09tbW3atWuX3r1754033kibNm3yk5/8JAMHDiwfKflJP//5z7Pjjjumf//++fWvfz1fGJLM2zvkscceK6+sS5KOHTtmt912y+67756vfvWr2XzzzT/XKrjKysrstNNOueOOO3LllVc2On5z6623zoYbbpgePXpkyy23zGGHHZY+ffrM9/fw3zp27Jgzzzyz0dGbwIppSQUinTt3zqxZs8or6pJ5q4G322677L777tl9992zww47LPIm/U2pq6vLV77ylQwfPjzf+973Gm243b59+/Tt2zfTp09Pnz59svfee2fvvfcuty8sEDnxxBMzderU8uo5WNoqSh7+hy+cadOmfeqmfkvCXXfdlWnTpmWTTTbJ5ptvvtAl6MAXyxZbbJERI0bkmmuuyUknnZSampqcfPLJOfvss5vcVG9B3n777XTq1CkdOnT4THXccMMN2WOPPRZpmfeMGTPStm3bBYYaL730Uh566KFstNFG2WijjeZ73n5JeeCBB7LXXnstlbEBknn3u6uuuiq9e/fORhttlF69ei2Vn9OeeOKJbLXVVkJZVlgCEQAAAKBwKpd3AQAAAADLmkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCABQGPX19cu7hC+s2tra5V0CACwWgQgAsFy9/vrruffee5f6PFOmTMnmm2+ev//970t87H79+qVnz5459NBDl/jYDaZOnZpTTz01v/zlLz/zGBtssEHWXXfd/O1vf/vUvqVSabHGvuqqq7LRRhvl0ksv/azlAcAyVbW8CwAA5hk/fnx22223z3x9q1at8uKLLy6wva6uLrW1tWnbtm0qKio+8zyfNHfu3MyePTtt2rT5zGOcdtppGTp0aL761a/mnnvuSXV19RKp7ZNKpVKOO+64vPTSS/nGN76Rv//97/n617+eJJkzZ05atmz5ucafMmVKxowZky9/+ctLotwm/elPf8pVV12VVq1a5ZBDDsn666+/2GOMGzcus2bNypw5cxbab+bMmdlnn33yrW99K/369Vuksf/617/m1VdfzcMPP5zTTz99sWsDgGVNIAIAzUTLli3z2muvfebrO3XqtND2J598shy4VFVVpUWLFp95rmTe4yd1dXU56qijcsstt3ymMQYPHpyhQ4cmSSZPnvy5a1qQU045JXfffXfatWuX3//+9+UwZMiQITnjjDPy+9//Pl/96lc/8/iTJ09Okmy11VZLpN6mfO9738vvfve7jBgxIgMHDlykVR7/rXXr1pk1a1ZatWq10H433nhjHnvssTz22GP5z3/+k1/+8pcLDdFGjhyZf//730mSxx9/PBMnTsyqq6662PUBwLLkkRkAaCZat25d/n706NEplUqL9DVs2LD5rm9KRUVFWrVqlU6dOqVLly7p0qVLVl555fm+VlpppdTW1qa2tjb19fXztXft2jUrrbRSqqur06pVq1RWfrYfJ55++un84Ac/SJKsueaaefHFF3PCCSd8prEWpFQq5eSTT84111yT1VdfPY8//ni++c1vJpm3Yub666/PuHHj0rdv3/z0pz/9zHuMjB8/Pkmy4YYbfuZa586dm48//jhz585tsr1Fixa5/PLLkyR33nlnRo4cudhzNKyEqapa+O/EGv7OqqqqcsEFF+Swww7LrFmzFtj/sssuS5L07t07H3/8cc4444zFrg0AlrkSANAszJgxo5SklKQ0evToRb5u2LBhpSSlL33pS5+7htra2tJuu+1WSlJq0aJF6S9/+cvnHrMpo0aNKq288sqlJKVTTjml9MEHH5TWXXfdUpLShRdeuETm+OCDD0pf//rXS0lKG2+8cZN/p3V1daXTTjut/Pe+yy67lCZOnLhY88ydO7fUunXrUpJSq1atSq1bt17sr6qqqnIN//nPfxY631ZbbVWqqKgoXX311YtVZ6lUKq222mqlJKV77713kfo/8MADpfbt25eSlLbddtvS+++/P1+f1157rVRVVVVq06ZNady4caWtt966lKQ0dOjQxa4PAJYlj8wAQDPxyZUWPXv2XObz19bW5rDDDssjjzySJLnooouWyiahL7/8cvbYY49Mnjw5/fr1y5VXXpmKiorcfffd2W677TJw4MB8+OGHOf/88z/TXif19fW5+uqrc8EFF2TChAlp27ZtDj744PzpT39KbW1t6urqUl9fn/r6+syZMyczZ87MaqutlgkTJuSxxx7L1ltvnXvuuSebbLLJIs03ceLE8gkrq6yyymLXWyqVUltbm5qamtTW1n7qe7744ovTtm3bbLfddos9V8P/xxb173XPPffMAw88kK997Wv597//nYcffjhHHHFEoz4/+clPUldXl1NPPTXdunXLddddl2233TbHH398XnjhhayxxhqLXScALAsVpdJibiEOACwVM2fOTLt27ZIk3bt3/9THGhrMmjUr7733XtZcc828++67n2nuSZMm5ZBDDsljjz1Wfu2+++7L1772tSTJ+++/n9VXX/0zjf1J//rXv/L1r389kydPzjHHHJObbrqp0b4hjz/+eL7+9a9n2rRpOfDAA3PLLbekbdu2iz3PNttsU97T4tO0adOm/DVhwoSUSqV07tw5L774Yrp16/ap1w8fPjzbb799OnXqlKlT/1979x7U1Jn+AfwLIcQAoiBKC+hYqVdaQNSiYsG1RU1rV6mipVPbquzWuiu4gmMdV3EFWTpehqqDWqpVWPGCW91iFQcRUotYCtpab7XWVSiCSwDLJQlJyNk/+HF+RG7hpu7w/cxkNOe857zvSZhxeHyf56ns8Fq76tKlS4iLixOfoa0Upn/84x+ora3FzJkz4ezsLAZhDhw4AHt7+1avO3fuHO7c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",
      "text/plain": [
       "<Figure size 1280x960 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytools.show_bar(df,'是否会参与讨论')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>性别</th>\n",
       "      <th>女</th>\n",
       "      <th>男</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>是否会参与讨论</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不参加</th>\n",
       "      <td>5.26</td>\n",
       "      <td>15.05</td>\n",
       "      <td>9.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>有时</th>\n",
       "      <td>63.16</td>\n",
       "      <td>56.99</td>\n",
       "      <td>60.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>积极参加</th>\n",
       "      <td>31.58</td>\n",
       "      <td>27.96</td>\n",
       "      <td>29.95</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "性别           女      男     合计\n",
       "是否会参与讨论                     \n",
       "不参加       5.26  15.05   9.66\n",
       "有时       63.16  56.99  60.39\n",
       "积极参加     31.58  27.96  29.95"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['是否会参与讨论'],\n",
    "        df['性别'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>是否会参与讨论</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不参加</th>\n",
       "      <td>12.5</td>\n",
       "      <td>12.20</td>\n",
       "      <td>6.48</td>\n",
       "      <td>16.67</td>\n",
       "      <td>9.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>有时</th>\n",
       "      <td>60.0</td>\n",
       "      <td>56.10</td>\n",
       "      <td>60.19</td>\n",
       "      <td>72.22</td>\n",
       "      <td>60.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>积极参加</th>\n",
       "      <td>27.5</td>\n",
       "      <td>31.71</td>\n",
       "      <td>33.33</td>\n",
       "      <td>11.11</td>\n",
       "      <td>29.95</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级         大一     大三     大二     大四     合计\n",
       "是否会参与讨论                                  \n",
       "不参加      12.5  12.20   6.48  16.67   9.66\n",
       "有时       60.0  56.10  60.19  72.22  60.39\n",
       "积极参加     27.5  31.71  33.33  11.11  29.95"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['是否会参与讨论'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从数据统计图，我们可以看出，无论性别、年级，大部分同学说自己只是有时参加课堂讨论"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>作业完成情况</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>能够及时完成</td>\n",
       "      <td>179</td>\n",
       "      <td>86.47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>不能及时完成</td>\n",
       "      <td>16</td>\n",
       "      <td>7.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>老师没有布置作业</td>\n",
       "      <td>12</td>\n",
       "      <td>5.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     作业完成情况   个数    百分比\n",
       "0    能够及时完成  179  86.47\n",
       "1    不能及时完成   16   7.73\n",
       "2  老师没有布置作业   12    5.8\n",
       "3        总和  207  100.0"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = pd.DataFrame()\n",
    "b['作业完成情况'] = df['作业完成情况'].value_counts().index\n",
    "b['个数'] = df['作业完成情况'].value_counts().values\n",
    "b['百分比'] = df['作业完成情况'].value_counts(normalize=True).values * 100\n",
    "b['百分比'] = b['百分比'].apply(lambda x: round(x, 2))\n",
    "total_row = pd.Series({'作业完成情况':'总和','个数':b['个数'].sum(),'百分比':b['百分比'].sum()}).to_frame().T\n",
    "pd.concat([b,total_row],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEQAAANoCAYAAADJTD/gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAB7CAAAewgFu0HU+AACNpElEQVR4nOzdd5RV1cE34N8MA0OTInZR7BqNJbaoseU1mlgSS1TsJZZojMYSS/ImajCxxRZjbETURKO+9miwYO89GCzEhgiICIIIAwzMcL8/WHM/RmZgkDZ4nmetu0LO2efsfcaZfe/9nX32riiVSqUAAAAAFEjlom4AAAAAwMImEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACichRaIHHvssamoqMiHH34423KjRo3Ksccem5VWWinV1dVZZ511ctlll2X69OmzPe61117LnnvumR49eqRDhw7Zaqut8sADD8zHKwAAAAC+LipKpVJpQVdywQUX5IwzzkiSDBkyJKusskqT5YYOHZqtt946w4cPn9G4ioo0NO+QQw7JjTfe2ORxDzzwQHbfffdMmzat0XEVFRXp27dvjjjiiPl8RQAAAMDibIGPELnkkkvyq1/9ao7lpk2bll122SXDhw9Pjx49cs8992TatGkZPHhwNtpoo/ztb3/LbbfdNstx7733Xvbee+9MmzYt3/rWtzJw4MDU1dXloYceSrdu3XLCCSdkyJAhC+LSAAAAgMXUAgtEJk2alP333z+nnHJKevbsOcfy1157bd56661UVFTk7rvvzu677542bdpk7bXXzp133pmqqqqceOKJqa+vb3Tcr371q0yaNCnLLrtsBgwYkA033DCVlZXZaaed8qc//SmTJk3K6aefvqAuEwAAAFgMLbBA5Oyzz86tt96ab3/723nppZfmWP7qq69Okuy2227ZZpttGu1bbbXVsueee+aTTz7Jc889V97+6aef5q677kqSnHbaaenRo0ej4/bff/+ssMIK+de//pUpU6bM6yUBAAAAXxMLLBCprKzMOeeck2eeeSbLLbfcbMuOGzcub7zxRpJk3333bbLMLrvskiSNJkp99tlny5Ot7rPPPrMcU1VVlR133DGTJk3KU0899ZWuAwAAAPj6qVpQJz7nnHPStm3bFpV97733yv/ecsstmyyzwQYbJEkGDx48y3E9e/bMSiutNMfjdtpppxa1p0HD5K7NmTJlSgYPHpxll102Sy+9dKqqFtiPEwAAAAqrrq4uo0ePTpKsv/76ad++/Tyfc4F9g29pGJIkn332WfmY5lagWWaZZZKk0bK9DcettdZazZ67qeNaqrmQBQAAAFg0XnrppWy22WbzfJ4FvspMS9TW1iZJunTpkjZt2jRZpnv37kmSkSNHznJcw76WHgcAAAAUW6t4xqMhBOnYsWOzZdq1a5ckmTx58jwf11LDhg2b4/6tttoqyYyEavnll5/rOgAAAIDZGzlyZDbffPMkydJLLz1fztkqApEOHTok+f/hRVMqK2cMZpk0adI8H9dSLVkuuMHyyy8/V+UBAACAuTe/5u9sFY/MNDzW8vHHHzdbZty4cUmSUqk0y3EjRoyYq+MAAACAYmsVgcjKK6+cZMZjLZ988kmTZUaNGpUk6dy58yzHDRkypNlzN3UcAAAAUGytIhBZaqmlyuHGK6+80mSZF154Icn/D0GSZJNNNkmSvP/++/n8889bfBwAAABQbK0iEEmSHXfcMUly6623Nrl/wIABSZKNN964vG3VVVfN6quvnrq6utxxxx2zHFNfX5/HHntsluMAAACAYms1gchhhx2WJLntttvy2muvNdo3ePDg3H333UmS3Xbbrcnjfv/732fChAmN9t144435+OOPU1VVle9///sLpuEAAADAYqfVBCJbb711vvOd76Suri677rpr+vfvn9ra2jz++OPZeeedM3Xq1Ky++ur50Y9+1Oi4n/70p+nWrVuGDh2anXbaKf/5z39SU1OT6667Lscdd1yS5IADDshyyy23KC4LAAAAaIVaxbK7DW6++eZsu+22+eijj7Lrrrs22te+ffvceOONadu2baPtSy+9dP7xj39kr732ygsvvJANN9yw0f5VV101F1100QJvOwAAALD4WGgjREqlUkqlUlZZZZVmy/Tq1SuvvPJKDjvssLRr1668ffPNN89TTz2V73znO00et/POO+eFF17I9ttvX95WWVmZffbZJ88//3yWXnrp+XUZAAAAwNdARalUKi3qRjRl/Pjxeffdd7P00kunV69eLT7u448/zogRI7LaaqulR48eC7CFyfDhw7PSSislSYYNG5aePXsu0PoAAACgiBbE9+9W9cjMzLp27ZpNN910ro9bYYUVssIKKyyAFgEAAABfF61mUlUAAACAhUUgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAq3Uo48+ml122SVLL7102rVrl549e2b77bdPv379Ul9fP8fja2tr881vfjMVFRU58MAD53v7rrjiilRUVMz29cwzz8z3egEAAOaHqkXdAGBWV111VY477riUSqUkSWVlZUaMGJERI0bkySefzK233pp77703HTp0aPYc//u//5s333wzyy+/fK644or53sYXXnghSdK2bdtUVjadrTa3HQAAYFHzbQVamf/+97854YQT0rZt2/Tt2zdjx47NtGnT8tFHH+X8889PVVVVBgwYkIsvvrjZczz11FO59NJLkyR//etf07179/nezhdffDFJ8txzz2XKlClNvrbaaqv5Xi8AAMD8IBCBVubWW29NXV1dfvrTn+bII49M9+7dU1lZmZVWWimnn356jj/++CTJfffd1+TxEyZMyGGHHZbp06fniCOOyC677DLf2/jZZ5/lvffeS7t27bL++uvP9/MDAAAsaAIRaGVGjBiRJFlzzTWb3L/yyisnSSZPntzk/pNOOilDhgxJr169cskllyyQNjY8LvOtb30r1dXVC6QOAACABUkgAq3MiiuumCTp379/k/vvv//+JMkmm2zS5L7rrrsuFRUV6devX7p06bJA2vj8888nSbbddtsFcn4AAIAFTSACrcyBBx6YTp065cEHH8yxxx6bd999N5MnT87gwYNz+OGH59FHH02HDh1y8sknNzpu7NixOeqoo5Ikm266aV588cWccMIJ+dWvfpUHHngg06dPn29tbAhEPvjgg2y77bZZaqml0qFDh6y99to56aSTMmzYsPlWFwAAwIJQUWpYxoK5Nnz48Ky00kpJkmHDhqVnz56LuEV8XTz99NM59NBDM2TIkFn2feMb38h1112XLbfcstH2o48+On379k2SdO7cOZtuummqqqry6quvZty4cdl8881zyy23ZLXVVpunttXX16dbt26ZOHFikmTJJZfMN7/5zdTV1eXf//53Jk+enE6dOuW+++7Ld7/73XmqCwAAIFkw37+NEIFW6IsvvsiUKVOa3NexY8eMHDmy0bbXX389f/3rX5Mke+yxR0aMGJHHH388AwYMyMiRI3PmmWfmpZdeyjbbbJNPPvlknto2cODATJw4MZWVlbnkkkvy8ccf58knn8yzzz6boUOHZrfddktNTU169+6dCRMmzFNdAAAAC4pABFqZJ554Irvvvns59Fh11VWz7bbblhPQV199NT/+8Y9z4YUXlo+5+OKLUyqV0qNHj/z9739vNHdIdXV1fve732XPPffMxx9/nIsuumie2rfaaqvl4YcfzpNPPpmTTjqp0aSqSy+9dO6888706tUro0ePzo033jhPdQEAACwoAhFoZU466aTU19dnhRVWyBNPPJEPPvggTz75ZIYOHZp//OMf6datW5KkT58+GTt2bJLkscceSzJj/pHOnTs3ed699torSfLPf/5zntrXvXv37Ljjjtl6662b3N+uXbscfPDBSZIHH3xwnuoCAABYUAQi0IoMHTo0AwcOTJL8/e9/z3bbbVfeV1lZmf333z+33HJLkqSmpiZPPfVUkmT06NFJkm9/+9vNnnvZZZdNknz00UcLoumNNIxm+eCDDxZ4XQAAAF+FQARakREjRiRJllhiiWYnJP3BD36QJZZYIknKj9U0PCLTMHqkKQ3zeXTq1Gme2zl16tTMbj7mhoCmoqJinusCAABYEAQi0Io0hBVt27ZtUZjQvXv3JMl6662XJBk8eHCzZV944YUkM1apmRdHHnlkunfvXj5fUx5//PEkyVprrTVPdQEAACwoAhFoRdZcc81UVVVl7Nix5dEiX/baa6+VR3tstdVWSZJdd901SXL55ZenpqZmlmNGjBiR6667Lknywx/+cJ7a2K5du0yaNCl//vOfm9z/9NNPlwORhnlLAAAAWhuBCLQiHTt2zL777pskOffcc2fZX1NTk+OOOy5Jsvfee2fllVdOkhx77LFZYYUVMnTo0PzgBz/Iiy++mOnTp2fKlCm59957s80222Ts2LFZeumlc+yxx85TG0844YS0bds2t9xySy677LLU19eX9z388MPZY489UiqVstFGG2X//fefp7oAAAAWlIrS7CYCYLaGDx+elVZaKUkybNiw8kSSMC8+++yz7LDDDnn99dez2WabZccdd0znzp3z4Ycf5o477sjYsWOz9tpr55lnnslSSy1VPu7VV1/NHnvskeHDhyeZMQnr9OnTy/s7dOiQRx99NFtuuWV529ChQ7P22msnSfr27VteHWZOrrnmmvzsZz/L9OnTs/TSS2eVVVbJmDFjMmTIkCTJd77zndx+++1Zfvnl5/nnAQAAsCC+fxshAq1Mjx498sILL+Tyyy9Phw4dcs011+TMM8/MLbfckl69euXss8/Oiy++2CgMSZJNNtkkr7/+ei655JJsueWWWWaZZVJVVZVll102vXv3zssvv9woDEmSUqmU2tra1NbWNhrpMSc//elP8+yzz2b33XfPtGnT8vrrr6e2tjZ77LFH7rjjjjz11FPCEAAAoFUzQmQeGCECAAAAC54RIgAAAADzgUAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4VYu6ASwaq5zxr0XdBGAR+vD8XRd1EwAAYJEyQgQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACF0yoDkUcffTS77LJLll566bRr1y49e/bM9ttvn379+qW+vr7JYyZMmJAzzjgjq6++eqqrq7PKKqvkrLPOSm1t7UJuPQAAANDaVS3qBnzZVVddleOOOy6lUilJUllZmREjRmTEiBF58sknc+utt+bee+9Nhw4dyseMGzcu2223XQYNGpQkqaioyNChQ9OnT58888wzeeihh1JV1eouFQAAAFhEWtUIkf/+97854YQT0rZt2/Tt2zdjx47NtGnT8tFHH+X8889PVVVVBgwYkIsvvrjRcb17986gQYPSoUOH9OvXL1OmTMmwYcOy44475rHHHpulPAAAAFBsrSoQufXWW1NXV5ef/vSnOfLII9O9e/dUVlZmpZVWyumnn57jjz8+SXLfffeVj/nXv/6VAQMGJEn69u2bww8/vPyYze23357u3bvn7LPPzmeffbZIrgkAAABofVpVIDJixIgkyZprrtnk/pVXXjlJMnny5PK2q6++Okmy/vrr58ADD2xUvmvXrjnyyCMzZcqU9O/ff0E0GQAAAFgMtapAZMUVV0ySZsOL+++/P0myySablLc9/fTTSZJ99923yWN22WWXJMkDDzww39oJAAAALN5aVSBy4IEHplOnTnnwwQdz7LHH5t13383kyZMzePDgHH744Xn00UfToUOHnHzyyUmS0aNHZ/z48UmSLbfcsslzbrDBBkmSwYMHL5yLAAAAAFq9VrX0yhprrJEHHngghx56aK6++ury4zANvvGNb+S6667L+uuvnySN5gVZa621mjznkksumaqqqnz44Ydz3Z7hw4fPdv/IkSPn+pwAAADAoteqApEk+eKLLzJlypQm93Xs2LFRCFFbW1v+d/fu3Zs9Z7du3TJmzJjU1tamurq6xW1ZaaWVWlwWAAAAWHy0qkdmnnjiiey+++7l0GPVVVfNtttum549eyZJXn311fz4xz/OhRdemCRp06ZN+diOHTs2e9527dolaTwZKwAAAFBcrWqEyEknnZT6+vqssMIK+cc//pHtttsuSTJ9+vTcdttt+dnPfpbPP/88ffr0yZFHHpkOHTokSaqqqlJZ2Xy207Bv0qRJ6datW4vbM2zYsNnuHzlyZDbffPMWnw8AAABoHVpNIDJ06NAMHDgwSfL3v/+9HIYkMwKN/fffP927d8/OO++cmpqaPPXUU9l2222TJHV1dRk1alSWXXbZJs89bty4JEmpVJqrNjWMTAEAAAC+XlrNIzMjRoxIkiyxxBL57ne/22SZH/zgB1liiSWSzBidseSSS6ZTp05JkiFDhjR5TE1NTWpqapIknTt3nt/NBgAAABZDrSYQaQg22rZtm4qKijmWb5hEdZNNNkmSvPLKK02We+GFF5IkXbp0SdeuXedHUwEAAIDFXKsJRNZcc81UVVVl7Nix5dEiX/baa69lwoQJSZKtttoqSbLjjjsmSW699dYmjxkwYECSZOONN57fTQYAAAAWU60mEOnYsWP23XffJMm55547y/6ampocd9xxSZK99947K6+8cpLk4IMPTmVlZZ599tncd999jY4ZPXp0+vbtmyTZbbfdFmTzAQAAgMVIq5lUNUkuv/zyvPnmm7nyyivz8ssvZ8cdd0znzp3z4Ycf5o477sjYsWOz9tpr56qrriof06tXr+y33375xz/+kQMOOCBXX3119tprr7z11ls56qijMnbs2HTr1i2HH374IrwyAAAAoDVpVYFIjx498sILL6Rv37654447cs0112T8+PHp0KFD1lhjjZxwwgk58cQTZ5kL5Iorrshbb72VgQMH5qCDDmq0r7KyMtdee22WXHLJhXkpAAAAQCvWqgKRJGnfvn2OP/74HH/88S0+pnv37nnmmWdy5pln5pprrimvKrPOOuvksssuy/e///0F1VwAAABgMdTqApGvqlOnTrn44ovTp0+fDB48OF26dMmaa665qJsFAAAAtEJfm0CkQadOncpL8QIAAAA0pdWsMgMAAACwsAhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDitPhAplUrZaaedUlFRkW233TbTp09vstyECRNyxhlnZPXVV091dXVWWWWVnHXWWamtrV3ILQYAAABau6pF3YA5+ctf/pIBAwakU6dOuf7661NZOWuGM27cuGy33XYZNGhQkqSioiJDhw5Nnz598swzz+Shhx5KVVWrv1QAAABgIWnVI0TeeeednH766UmSCy+8MKuvvnqT5Xr37p1BgwalQ4cO6devX6ZMmZJhw4Zlxx13zGOPPZaLL754YTYbAAAAaOVabSBSX1+fQw45JJMmTcr3vve9HHvssU2W+9e//pUBAwYkSfr27ZvDDz887dq1S8+ePXP77bene/fuOfvss/PZZ58tzOYDAAAArVirDUTOO++8vPjii+nSpUuuu+66VFRUNFnu6quvTpKsv/76OfDAAxvt69q1a4488shMmTIl/fv3X+BtBgAAABYPrTIQ+fe//50+ffokSS677LKsvPLKzZZ9+umnkyT77rtvk/t32WWXJMkDDzwwn1sJAAAALK5a3UyjU6dOzSGHHJJp06Zl1VVXzdixY3PiiSembdu22XzzzbP77runXbt2SZLRo0dn/PjxSZItt9yyyfNtsMEGSZLBgwcvnAsAAAAAWr1WF4hcdNFFeeONN5IkI0eOzD333JOOHTvmP//5Ty666KKstdZa+cc//pFNNtmk0bwga621VpPnW3LJJVNVVZUPP/xwrtsyfPjw2e4fOXLkXJ8TAAAAWPRaVSDyySef5Nxzz00yY8THXXfdleWWWy5JMn369Fx99dX5xS9+ke9+97t5/vnnU1dXVz62e/fuzZ63W7duGTNmTGpra1NdXd3i9qy00kpf8UoAAACA1qxVzSFy5ZVXpqamJlVVVbntttvKYUiSVFZW5mc/+1mOP/74TJgwIWeddVbatGlT3t+xY8dmz9vwiM3kyZMXXOMBAACAxUarCkQee+yxJDMmQm1udMZee+2VJLn//vvToUOHJElVVVUqK5u/lIZ9kyZNmqv2DBs2bLavl156aa7OBwAAALQOreqRmdGjRydJvv3tbzdbZtlll02S1NbWlgORurq6jBo1qrzvy8aNG5ckKZVKc9Wenj17zlV5AAAAYPHQqkaIdOnSJcmMOT+aM2HChPK/l1hiiXTq1ClJMmTIkCbL19TUpKamJknSuXPn+dRSAAAAYHHWqgKR9dZbL8nsl8h94YUXkiQrrrhillhiiWyyySZJkldeeWW25bt06ZKuXbvOz+YCAAAAi6lWFYjsuuuuSZIbb7wxH3/88Sz7J0yYkEsvvTRJ8sMf/jBJsuOOOyZJbr311ibPOWDAgCTJxhtvPN/bCwAAACyeWlUg8uMf/zjf+ta38sUXX2SnnXbKo48+mmnTpqWuri6PPfZYtt1227z33ntp3759TjvttCTJwQcfnMrKyjz77LO57777Gp1v9OjR6du3b5Jkt912W+jXAwAAALROrSoQqayszB133JFvfvObefPNN/O9730v1dXVadeuXXbYYYcMHDgwbdq0yc0335xVV101SdKrV6/st99+SZIDDjggN998cyZPnpxXX3013//+9zN27Nh069Ythx9++KK8NAAAAKAVaVWrzCTJaqutlhdffDE333xzbrnllrzzzjv59NNP06VLl2y55ZY544wz8p3vfKfRMVdccUXeeuutDBw4MAcddFCjfZWVlbn22muz5JJLLszLAAAAAFqxVheIJEnHjh1z1FFH5aijjmpR+e7du+eZZ57JmWeemWuuuaa8qsw666yTyy67LN///vcXZHMBAACAxUyrDES+ik6dOuXiiy9Onz59Mnjw4HTp0iVrrrnmom4WAAAA0Ap9bQKRBp06dSovxQsAAADQlFY1qSoAAADAwiAQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEsNoHIiy++mHbt2mX77bdvcv+ECRNyxhlnZPXVV091dXVWWWWVnHXWWamtrV24DQUAAABavapF3YCWGD9+fPbff/9Mmzatyf3jxo3Ldtttl0GDBiVJKioqMnTo0PTp0yfPPPNMHnrooVRVLRaXCgAAACwEi8UIkaOPPjpDhgxpdn/v3r0zaNCgdOjQIf369cuUKVMybNiw7Ljjjnnsscdy8cUXL8TWAgAAAK1dqw9E+vbtm//7v/9LRUVFk/v/9a9/ZcCAAeWyhx9+eNq1a5eePXvm9ttvT/fu3XP22Wfns88+W5jNBgAAAFqxVh2IvPXWWznxxBNTUVGRU045pckyV199dZJk/fXXz4EHHthoX9euXXPkkUdmypQp6d+//wJvLwAAALB4aLWByJQpU9K7d+9MmjQpv/zlL7Prrrs2We7pp59Okuy7775N7t9ll12SJA888MCCaSgAAACw2Gm1gciJJ56YN954I1tttVXOPffcJsuMHj0648ePT5JsueWWTZbZYIMNkiSDBw9eMA0FAAAAFjutcumVO+64I9dcc0169OiR2267rdkVYmaeF2SttdZqssySSy6ZqqqqfPjhh3PdjuHDh892/8iRI+f6nAAAAMCi1+oCkaFDh+aoo45KRUVF/va3v6Vnz57Nlq2trS3/u3v37s2W69atW8aMGZPa2tpUV1e3uC0rrbRSi8sCAAAAi49W9chMXV1d9t9//3z++ec57bTTyvN/NKdNmzblf3fs2LHZcu3atUuSTJ48ef40FAAAAFistaoRIr/97W/z/PPP5zvf+U5+//vfz7F8hw4dkiRVVVWprGw+22nYN2nSpHTr1q3F7Rk2bNhs948cOTKbb755i88HAAAAtA6tJhB55JFHcsEFF2SppZbKrbfe2uy8ITNreEymrq4uo0aNyrLLLttkuXHjxiVJSqXSXLVpdo/rAAAAAIuvVhOI3HTTTSmVShkzZsxs5+548sknU1FRkSS5/vrr06lTp9TU1GTIkCFNBiI1NTWpqalJknTu3HnBNB4AAABYrLSaOUTatm2b6urqZl9t27ZNklRUVJS3tWnTJptsskmS5JVXXmnyvC+88EKSpEuXLunatevCuRgAAACgVWs1gUjfvn0zZcqUZl8PP/xwkmTbbbctbzv44IOz4447JkluvfXWJs87YMCAJMnGG2+8cC4EAAAAaPVaTSDyVR188MGprKzMs88+m/vuu6/RvtGjR6dv375Jkt12221RNA8AAABohRb7QKRXr17Zb7/9kiQHHHBAbr755kyePDmvvvpqvv/972fs2LHp1q1bDj/88EXcUgAAAKC1aDWTqs6LK664Im+99VYGDhyYgw46qNG+ysrKXHvttVlyySUXUesAAACA1maxGSGy/fbbp1Qq5YknnphlX/fu3fPMM8/k5JNPTqdOncrb11lnnfTv3z/77LPPQmwpAAAA0Np9LUaIJEmnTp1y8cUXp0+fPhk8eHC6dOmSNddcc1E3CwAAAGiFvjaBSINOnTqVl+IFAAAAaMpi88gMAAAAwPwiEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHBafSAyffr01NXVLepmAAAAAF8jrTIQefHFF7PHHnukR48eadOmTdq2bZvVV18955xzTqZMmdLkMRMmTMgZZ5yR1VdfPdXV1VlllVVy1llnpba2diG3HgAAAGjtqhZ1A77sxhtvzBFHHJH6+vp07NgxW2yxRT799NN88MEHOfPMM/Pggw/mscceS3V1dfmYcePGZbvttsugQYOSJBUVFRk6dGj69OmTZ555Jg899FCqqlrdpQIAAACLSKsaIfL666/n6KOPTn19fU455ZSMGjUqzz//fN57771cccUVSZLnnnsuf/zjHxsd17t37wwaNCgdOnRIv379MmXKlAwbNiw77rhjHnvssVx88cWL4nIAAACAVqpVBSKnnXZapk6dmtNOOy0XXXRROnfunGTGiI/jjjsuu+++e5LklltuKR/zr3/9KwMGDEiS9O3bN4cffnjatWuXnj175vbbb0/37t1z9tln57PPPlv4FwQAAAC0Sq0mEKmpqUnHjh2z2Wab5cwzz2yyzGabbZYk+fjjj8vbrr766iTJ+uuvnwMPPLBR+a5du+bII4/MlClT0r9//wXUcgAAAGBx02oCkU6dOuXuu+/OSy+9lE6dOjVZpiEImXn/008/nSTZd999mzxml112SZI88MAD87O5AAAAwGKs1QQic1JfX5977703SbLDDjskSUaPHp3x48cnSbbccssmj9tggw2SJIMHD14IrQQAAAAWB4vN0iv9+vXLiBEjkiQnnnhikjSaF2SttdZq8rgll1wyVVVV+fDDD+e6zuHDh892/8iRI+f6nAAAAMCit1gEIiNHjswZZ5yRJDn88MPzrW99K0lSW1tbLtO9e/dmj+/WrVvGjBmT2traRsv1zslKK630FVsMAAAAtGat/pGZ6dOn55BDDsnYsWPTq1evXHLJJeV9bdq0Kf+7Y8eOzZ6jXbt2SZLJkycvuIYCAAAAi41WP0Lkt7/9bR555JFUV1fntttuS7du3cr7OnTokCSpqqpKZWXz2U7DvkmTJjU6fk6GDRs22/0jR47M5ptv3uLzAQAAAK1Dqw5Ebrvttpx77rlJkquuuirf/va3G+1veEymrq4uo0aNyrLLLtvkecaNG5ckKZVKc1V/z54957bJAAAAwGKg1T4y8/zzz+fwww9Pkpx++unlf89sySWXLC/BO2TIkCbPU1NTk5qamiRJ586dF1BrAQAAgMVJqwxE3nzzzfzwhz/M5MmTs88+++S8885rtuwmm2ySJHnllVea3P/CCy8kSbp06ZKuXbvO/8YCAAAAi51WF4i88cYb2WGHHfLZZ59lu+22y9///vdUVFQ0W37HHXdMktx6661N7h8wYECSZOONN57/jQUAAAAWS60qEBk1alS+973vZdSoUVl//fVz7733znGZ3IMPPjiVlZV59tlnc9999zXaN3r06PTt2zdJsttuuy2wdgMAAACLl1YViFx00UUZNWpUkuTtt9/Osssum/bt2zf5euqpp5IkvXr1yn777ZckOeCAA3LzzTdn8uTJefXVV/P9738/Y8eOTbdu3ZqcgwQAAAAopla1yszAgQPL/66rq0tdXV2zZadPn17+9xVXXJG33norAwcOzEEHHdSoXGVlZa699tosueSS8729AAAAwOKpVY0QGTBgQEqlUote22+/ffm47t2755lnnsnJJ59cXnUmSdZZZ530798/++yzzyK4GgAAAKC1alUjROZFp06dcvHFF6dPnz4ZPHhwunTpkjXXXHNRNwsAAABohb42gUiDTp06lZfiBQAAAGhKq3pkBgAAAGBhEIgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRACAxcL222+fioqKFr1WWWWVeaprlVVWaXFd22+//Xy5PgBg4apa1A0AAGiJdu3apbq6erZl6uvrU1dXl8rKebvnU11dPce66urqUl9fP891AQCLhndwAGCx8PDDD2fKlCmzfe20005JkkMOOWSe6vrvf/8723pqamqy7rrrzpe6AIBFQyACAHwtPPzww+nfv39WWmmlnH766Qu0ruuuuy6DBg3KZpttlkMPPXSB1gUALBgCEQBgsVdfX59TTjklSXLhhRemQ4cOC6yuL774Ir/97W9TUVGRP/3pT6moqFhgdQEAC45ABABY7PXt2zdvvPFGtt566+y3334LtK5zzz03n376aQ444IBsueWWC7QuAGDBEYgAAIu1qVOn5pxzzkmS8v8uKKNHj87ll1+eNm3a5He/+90CrQsAWLAEIgDAYu2GG27Ixx9/nC222GKBL4F76aWXZvLkydlnn32y+uqrL9C6AIAFSyACACy26uvrc+GFFyZJzjjjjAVa1xdffJErr7xyodQFACx4AhEAYLF1++235/3338+6666bH/3oRwu0riuvvDLjx4/PD37wg2y44YYLtC4AYMETiAAAi60///nPSZJjjjlmga72Mn369PLokJ/97GcLrB4AYOERiAAAi6V33nknzz33XKqqqhb4yjKPPPJIhg0blqWWWio/+MEPFmhdAMDCIRABABZL119/fZLkBz/4QZZeeumFUtd+++2Xtm3bLtC6AICFQyACACx26uvr87e//S1JcvDBBy/Quj7//PPcc889C6UuAGDhEYgAAIudZ599Nh9//HGqqqqyyy67LNC6/vnPf2bKlClZbrnlsvnmmy/QugCAhUcgAgAsdvr3758k2WyzzdK5c+eFUtd3v/vdBVoPQEt88cUXadOmTSoqKpp9HXnkkfOlrlKplGuuuSZbbLFFunTpkg4dOmS11VbLnnvumccff3y+1AGLkkAEAFjszE1Isfbaa6d9+/Y56qij5rqe+vr6PPzwwy2uC2BBe+mllzJ9+vRUVlamurq6ydf8mOuoVCrloIMOyjHHHJMXX3wxEydOTG1tbYYMGZJ77rkn//M//5Pf/OY38+GKYNERiAAAi5Xhw4dn0KBBSVoWUtTW1qa2tjbTpk2b67peeOGFjBs3rsV1ASxoL774YpLk2GOPzZQpU5p8XXXVVfNcT79+/fKPf/wjK6+8cgYMGJCamppMmTIlgwYNyqGHHpok+cMf/pBnnnlmnuuCRaVqUTcAAGBu9OzZM6VSqcXlP/zww69c13e+8525qgtgQWsIRDbddNMFWs9NN92UJLn00kvzve99r7z9m9/8Zm644Yb85z//yb///e/cd9992XrrrRdoW2BBMUIEAABgMfHCCy8kSbbYYosFWs+IESOSJGuuuWaT+1deeeUkyeTJkxdoO2BBEogAAAAsBt57772MHj06yyyzTNZZZ50FWteKK66Y5P/P2TSzcePG5dlnn02SbLLJJgu0HbAgCUQAAAAWA88//3ySpEePHtl///3Tq1evtG/fPssvv3z22muvPPDAA/OtrqOPPjpJ8rvf/S5//vOf8/HHH2fixIl59tlns8suu2TMmDFZa621ss8++8y3OmFhE4gAAAAsBp577rkkydtvv53bb789PXr0yDbbbJM2bdrk7rvvzi677JLjjjtuvtS1//775+qrr06bNm1ywgknZMUVV8wSSyyRrbfeOi+88EJ23nnnPPHEE+nYseN8qQ8WBYEIAADAYqBhRZedd94577//fl577bUMGDAgH330Ua688spUVlbmyiuvzG233TbPdZVKpYwbN67JFboqKyvTtm3bjBo1ap7rgUVJIAIAALAYuPbaa3PHHXfknnvuSa9evcrbKysrc+yxx+a0005Lkvzxj3+c57p+//vf51e/+lVqa2vTpk2bbLTRRtliiy3SrVu3TJ8+Pf/85z+zxRZb5Omnn57numBREYgAAAAsBrbccsv8+Mc/Trt27Zrcf+SRRyZJXn311YwZM+Yr1zN69Oj8/ve/TzJj+fH33nsv//73v/P8889n2LBhOeuss1JRUZHa2tqceuqpX7keWNQEIgAAAF8DPXv2LP/7gw8++Mrn6d+/f6ZOnZru3bvnnnvuySqrrFLe17lz55x99tnl0SgvvvhiPv/8869cFyxKAhEAAIDFRG1tbbP7Ro8eXf53RUXFV65jxIgRSWaMDllqqaWaLDPz6jIjR478ynXBoiQQAQAAaOXuvfferLzyyjnhhBOaLfP4448nmTGnyBprrPGV6+rUqVOSNPtoTtI4cOnevftXrgsWJYEIAABAK7f88stn2LBhue222xqNBGkwderUnH/++UmS7bfffp5CinXXXTdJMmjQoGbLPPHEE0mS1VZbLcstt9xXrgsWpapF3QAAWBRWOeNfi7oJwCL24fm7LuomQIttvvnm2XrrrfPMM89kv/32y2233VZ+nGXUqFE58MAD89Zbb6Vt27blCVG/qu9+97vp1atX3n333dx+++2NHo9JknfffTd/+MMfkiQnn3zyPNUFi5JABAAAYDFw4403Zvvtt89jjz2WFVdcMeuuu25KpVLefvvtTJ06Nd26dcsNN9yQLbfcstFx7du3T5L85je/yW9+85s51lNVVZXbbrstu+66a/bff//cdNNN2XjjjVNRUZE33ngj9957b6ZOnZq99947P/vZzxbItcLCIBABAABYDKy22mp5/fXXc9555+WOO+7IG2+8kSWWWCIbb7xxdt111xx77LHp0aPHLMc1TMRaV1fX4rq+/e1vZ9CgQbn88svz4IMP5vHHH8/kyZPTtWvXbLXVVjn44INz2GGHzdPkrbCoCUQAAAAWE927d8+FF16YCy+8sMXHlEqlr1TX8ssvn/POOy/nnXfeVzoeWjuTqgIAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABRO1aJuAAAAsPCtcsa/FnUTgEXsw/N3XdRNWKSMEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAK52sViEybNi3nn39+1l133VRXV2eFFVbIL37xi4wfP35RNw0AAABoRaoWdQPml9ra2uy222555JFHkiQVFRUZOXJkLr/88jz22GN59tln06VLl0XcSgAAAKA1+NqMEDn++OPzyCOPpLKyMhdeeGEmTJiQMWPG5KCDDsobb7yR008/fVE3EQAAAGglvhaByKBBg3LdddclSfr06ZNTTz01nTp1So8ePdKvX7+svfbaueaaa/LGG28s4pYCAAAArcHXIhC59tprM3369Cy11FI59dRTG+1r27ZtTjjhhJRKpdx9992LqIUAAABAa/K1CESeeuqpJMnuu++edu3azbJ/l112SZI88MADC7VdAAAAQOv0tZhU9b333kuSbLnllk3uX2WVVdKlS5cMHjx4rs47fPjw2e4fNmxY+d8jR46cq3MvanVfjFnUTQAWoTn1b0WgHwSK3hfqB4HFqR+c+Tt3XV3dfDlnRalUKs2XMy0iU6ZMSYcOHZLMGCmyzTbbNFlujTXWyPvvv5/x48e3eLWZioqK+dZOAAAAYN699NJL2Wyzzeb5PIv9IzO1tbXlf3fv3r3Zcg37FreRHAAAAMD8t9g/MtOmTZvyvzt27NhsuYa5RSZPntzic8/8SExTpkyZksGDB2fZZZfN0ksvnaqqxf7HSQGMHDkym2++eZIZyeryyy+/iFsEsHDpB4Gi0w+yOKqrq8vo0aOTJOuvv/58Oedi/w2+4XGZJE1OqNqgsnLGYJhJkya1+Nw9e/acY5k11lijxeeD1mb55Zdv0e85wNeVfhAoOv0gi5NVVlllvp5vsX9kpk2bNlliiSWSJCNGjGi23Lhx45Iki/mUKQAAAMB8sNgHIkmy8sorJ0mGDBnSbJlRo0YlSTp37rxQ2gQAAAC0Xl+LQGSTTTZJkrzyyitN7n///fczZsyMZcUawhMAAACguL4WgciOO+6YJLnjjjtSX18/y/4BAwYkmfG80exWogEAAACK4WsRiOy5557p0qVLhg4dmiuvvLLRvilTpuSSSy5Jkuy2226LonkAAABAK/O1CEQ6deqUn//850mSk08+OX/6058yYcKE/Pe//81uu+2Wd999N1VVVTn++OMXcUsBAACA1uBrEYgkyZlnnpmddtopdXV1OfHEE9OlS5ess846efTRR5Mk559/ftZaa61F3EoAAACgNagofY3Woa2rq8sFF1yQSy65JGPHjk2S9OzZM+eff34OPPDARdw6AAAAoLX4WgUiDWpra/P222+nXbt2+cY3vpGKiopF3SQAAACgFflaBiIAAAAAs/O1mUMEAAAAoKUEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgwX4wfPz6ffPJJxo0bN8/nqq+vz/jx4+dDq+bO8OHD88QTT+Stt95KfX19efuwYcMWeluAxY9+EPi6mjJlSq677rpF0i/Nb9OmTZvt/tGjRy+kltAaCET4Wnj55ZfzyCOPzLbMhx9+mCuuuCI333zzV67njTfeyBprrJHTTz89b7zxxhzLH3HEETnqqKPy2muvfeU6FxfHHXdcll9++RxwwAHzdJ5XX301W2yxRXr37p1SqTSfWtcyL774Yr773e9mvfXWK3+hOe2007Luuuumf//+C7UtMCdjx47NuHHjMmnSpNTV1c2Xc9bV1WXixIkZM2bMbMvdeeedeeedd2Zb5tlnn80VV1yRJ554Yr60bXGgH4TZmzp1aioqKlJRUZGBAwfO13PX1tZmhx12yFFHHZUXXnhhvp57ZjU1NQvs3HPr+OOPz5lnnpmnn356gdf16KOP5sgjj8xyyy2Xa6+9doHXtyDdcMMN2WGHHfL88883uf/b3/52vvOd76Rv376pra2db/UOGTIk999/f+6///6899575e0jRowobx85cuR8q4+WqVrUDYD54ZRTTsnTTz+dTTbZJHfeeWd69eo1S5n//ve/Of7447PRRhvlwAMPnGX/tGnT0rZt29nW89e//jXvv/9+Lr300vTu3Xu2ZSdOnJjbbrstNTU1WWqppbLxxhu3+HomTpyYurq6dOzYMVVVVamsbP3ZZXV1daP//apef/31vPLKK0mSq6++Oscee+w8t62lOnfuXP53t27dUl9fnyFDhmTixIn50Y9+lKuvvjpHHnnkQmsPzM5ee+2VJ598coGcu1evXvnwww+b3Ddu3LgcccQRmThxYn784x/npptuarLvvP/++3P++efnxBNPzPbbbz/L/jn1ufpB/SBfP+3atUtVVVX5b3t2xo8fn08//TRrrrlmi87dtm3bPPbYY3nsscey/fbbZ9NNN80//vGPdOjQIR07dkybNm3meI7p06dn2rRpmThxYnbfffdGfw9J8uabb2b77bfPr371q5x88sktateCUl9fnxtuuCETJ07M+PHjs8022yzQ+v75z38mSaqqqrLHHnvM8/k++OCD+Rqytm/fvsV907/+9a889thj2WqrrXLvvffmRz/6UXnfc889lyFDhmTIkCFZddVVc9RRR823Nj7++OM54ogjkiSXXXZZfvGLXySZcWN3zz33TDLjvXPXXXedb3XSAiVYzP3rX/8qJSklKV1yySXNlnvyySdLSUqbb755o+319fWlSy+9tNSrV6/SsGHDmj1+8uTJpR49epSSlE488cQ5tuuss84qJSmtt956palTp7b8gmY6dl5fp5xyylzVOy+OPfbYUpLSvvvuO8/n+t73vldKUlpyySVLY8eOnQ+ta5mnn366/LNrUFdXVzrssMNKSUoVFRWlq6++eqG1B2Znu+22K/++VlRUlNq1a1eqrq5u8tW2bdty2ebKVFdXlyorK0tJSr169Wq23lNPPbWUpNS+ffvSs88+22y53/3ud6UkpdNOO63R9i+++KL0k5/8pLT99tuXpk2b1uzx+kH9IF9PHTt2LCUpvf/++7Mtd+qpp5aWWGKJ0p/+9KdSXV1di87d0Nc9+uijpQkTJsxT3zFkyJBZzn/IIYeU9++2226lcePGNdr/j3/8o0XnfvDBB1v642rWM888Uz7f7Pri+eGLL74odenSpZSkdPrpp8+Xcz700EPzpY9veC2//PItqnfs2LGl6urqUpLSD37wg1n2H3fccaUkpe7du8/y33dezfydpV+/fuXtM/e7Tz/99HytkzkzQoTF2rhx43L00UcnSQ477LCcdNJJSWYMSXv99dcbJdgdOnRIklRUVJS3PfTQQznjjDPKwzZ//vOf55577mmyrmuuuSafffZZunbtmt/85jezbdfHH3+ciy++OEmy+eab57rrrmuy3IEHHpglllhilu1LLbVUNthgg/Kd0TZt2mTw4MEZNWpU1lhjjay44orN1v3OO+9k5MiRWWKJJfKrX/1qtu084IADcsstt8y2zPPPP58ttthitmWSGXcMZv7fL5s8eXLWX3/9OZ4nSSZMmJBkxiMB6667bjp16jTHYw4//PD87//+b4vO35yG35GZtWnTpvzM7N13351HHnkkRx99dKPfI1gU7rvvvlRUVKRdu3Zp167dbMuecMIJ+fOf/5x11103gwYNmu1oi7q6ukyePLnJfc8//3wuueSSJDNGLmy11VZJZgylXnrppbPBBhuUy365z62trc0NN9yQs846K6NGjUqSXHHFFTnxxBObrEs/qB/k66lhpMbs+qEPP/wwl19+eWpra/PEE0/k5z//eaP9dXV1+cY3vpFSqZRrrrkmO+ywQ5IZowSmTZuWFVZYIe3atcuJJ55YHiEy89/lbbfdloEDB2aPPfbIt7/97fL2+vr68giRLl26zNKu66+/Pquvvnr69OmT+++/P9/+9rfzz3/+M2uvvXaSlEe9de7cuck+6v33309dXV2Tf2df9umnn6ZDhw6prq5O27ZtZ/l7u++++5IkSy65ZIv6p6lTp6a2tjZTpkxJ586dW9SGBjfccEO++OKLtG3bNieccEKLj5udhhFC6623XqPH0D///PN07949f/zjH/PLX/6yvP2VV17JZpttltNPPz3nn39+efszzzyTbbbZpkV9ZJLccsst5cdg/vCHPzTa9/nnn+fvf/97khmjz7t16/aVrq05Sy+9dPnfM/9+zdz2rl27ztc6mTOBCIu1Y445JiNGjMhGG22UK6+8MsmMeT622mqrTJ06NU8++WT5ja7hjaSuri4333xz/vjHP+b1119Pkmy88cY544wzstdeezVZz+TJk8ud77Rp0xq9ec7skksuyQ9/+MMcdthhmThxYpIZb57XX3/9LGXXXXfdHHPMMU2e5+c///ksb/777bdfbrvttvzv//5vDjvssCaPq6+vLw8t/fnPf54ePXo0Wa5Bw4eDJZZYIssss0x5e6lUygcffJAkc/yi1aDhg01zH3Cqq6vz/vvvt+hcM/vkk09aVG769Olzfe4vm3n4bl1dXfnnU1lZmZtuuilXX311fvazn2XChAnp3LnzYjGEn6+vpsLUprz99tu56qqrkiS///3v5/h7W1VV1eS5v/jiixxyyCGpr6/P0UcfnUMPPTTJjD7uiCOOyKqrrpqXX345Sy65ZJL/3+d+/vnnOe+883L55Zfnk08+SUVFRfbYY4+cfvrps/0Qrx/8//SDLG4++uijbLjhhmnfvn3at2+fdu3alfuEhjk4dthhh1RVVWXatGmZNm1apk6dmhVXXDGvvfZajjrqqNTW1mbDDTfMzTffPMvvWVVVVYYNG5ba2tpGX+wbyjXUeemllzbZvjfeeCMDBw7M97///WY/izWlsrIyZ555Zrbddtvstddeeeedd7LFFlvkX//6V7baaqvyNe6000658847Zzl+lVVWydChQ9O+ffvZ1jNlypQsu+yyLWrT2LFjW/Q40Myuv/76ch/6+OOPZ88990z79u1TXV2dNm3azPLzbuiDKioqsu22287x/KVSKXV1dZk6dWomT56c//znP1l55ZXnqo1zqyX9dKlUyp///OckyXe/+91ZHme//PLL88UXX6R9+/az/b0olUqpr69PbW1tpk6dmu7du7eojTP/rs78aOXMvw9ffkyLBU8gwmLr97//ff7v//4vyyyzTO65555yJ/PNb34z++67b6677rrstddeefnll7PCCiuUj3v11Vdz0EEHpaqqKnvuuWd+8YtfZLvttpttXeedd175zWDSpEnNfqDt0qVLzjvvvAwYMCBJ8otf/CI9e/ZsVOaCCy7ImDFjctxxx83V9TYELLN7g7zrrrsyZMiQdOnSJaeccsocz9lwJ2OvvfbKDTfcUN4+ZcqU8s+zbdu2mThxYvlOdFVVVZN3Bb/8RaDhLkSXLl1SUVGRysrKtG/fPlOmTMmf//znWb7ofFWbbrppXn311Sy11FJN7r/pppta/ExpaabJC7/8hlRfX5/6+vryz/Xtt9/OOuus8xVbDQvPiSeemLq6umyzzTblZ5TnVl1dXXr37p333nsv22yzTfkDZZLsu++++dOf/pTXX389vXv3zgMPPNDoTuw111yTZEb/ePzxx+f4449v8ZwAX6YfbJp+kNZm+vTp+fzzz2dbpiFwnNkSSyyRq6++Oo888ki6deuWO++8s9mRDNXV1amtrW32935B2n777fPMM89kl112yfrrr58NN9wwScoTYs7pC/KcvrxXVFSkc+fO6dixY9q3bz9LnzNhwoR8+umnSWbM+dTcqLSZ1dfXp66uLjU1NY3KN6xo1ZLVY6ZOnfqVQt2mwtqGUXBvvvlmk/3pqaeemlNPPXWW7RdccEEuuOCCWbZPmTJlju247777Mnjw4CSZJfCYMGFC/vSnP5XP1dLfq29/+9stnsR35t/lmX8HZr5+I+8WPoEIi6U+ffrkrLPOSocOHfLPf/4zvXr1ytSpUzNhwoRMnDgxxx57bB544IF8/PHH2XXXXRvNvr3UUkvl7LPPzr777tto6NrkyZPTpk2bWd6kXn/99fLokN/97nc588wzZ2lPz549yzNENzwqc9BBB2XvvffOpptuWk5+BwwYkDFjxmSFFVYo311tqYZAZuZw58sa3iBOPvnkOd4VTZof1v3lMgcddFDuvffe8raKioryHYSZR94kMz54//3vfy9/qB45cmSWW265JHNe5mxeNHdndPr06amtrU3btm0b3f1tzsiRIzN9+vR07969fMel4U5AfX19pkyZkilTpnjDYrHQr1+/PPzww0lSfqRwbjWMDHnwwQezxhpr5O677067du0yefLkcp975plnZt99980jjzySY445Jn/961/Lx3/rW9/Kr371q/zwhz9sdBds/Pjxcz00WD84e/pBWosVVlghAwcOTNeuXdO1a9d06dKl/LvUrVu3jB8/PkOGDMlKK61UvtM+bdq0vPLKK9ljjz1SUVGRG264IauvvnqzdTT8/rV0BNe8qqmpafRow7rrrpsXXnghXbp0KY+s+uijj5Jktu1uierq6nJg0JTvf//7efjhh7Phhhvm3//+9zz9LW6zzTb59NNPG40QafhvNX78+Ky11lr59NNPZ3lUZV6tvfbajcL1pnzyySd5+umns8QSS2STTTZp9Ln9y+b0CFCpVGr0GX7zzTdvtP8Pf/hDxo4dm+rq6qy88sp59913y+38sunTp5d/b788onLatGm588478+STT5ZHZzaYeSRPS0fXPfPMMzn66KOz995758ADD2yyPcwbgQiLpbvuuivJjA5p5513zsSJE5v9kDlw4MD07t07v/vd75LMeJNqanTGY489lp/85Cc55phjymW/+OKLHHDAAZk2bVrWX3/9nHHGGU3W0ZBKf/HFF6moqMhmm22WY445JjvvvHPWWmut3HvvvenatWuOP/74JDNmlm7ps44NPv744ySZZcRJgwceeCCvvvpqll566RZ/8ZnTqjpJyh/4G+YpqKqqKq/40NCxV1RU5IsvvsjEiRNTXV2djh07lj8wN6itrU19fX2jc48ePTpt2rRJdXV1qqurZ/vFpOFDeG1tbUql0ixfdBrmJPiyhjecDTbYoLxqw+z06tUrH330UQYMGJBvfvObcywPrdWwYcMa9QVz87z4zGpra8srAYwaNSqrrbZaampqZvl7bnDddddlrbXWKv/t7bTTTtlnn31mKff73/8+/fv3z1lnnZV99923RW3RD+oHWTy0a9euPGpidhq+fLdr1y7jxo3LMccck8mTJ+e3v/1tdt9993lux7vvvptnn312lu0No1Oef/75Jh9f2WabbRqFGuPGjcsWW2yRXXfdNRdccEG532gIOhs89dRTSdKix0q+qrvuuqscdPfp02eeg8nq6upmg4bf/OY3+fTTT7Psssvm17/+dXn7rrvumlGjRuX3v/99fvCDH3yleldbbbU5jpK777778oc//CFt27bN9ddfP9tAZE5uvvnm8qPyX/bmm2+WH6/q06dPjj766PIon4YRJS3161//OhdddFGSGcsir7vuul+5zcmMJezffvvtnHPOOVlnnXUEIguAQITF0j777JOhQ4dmww03zBprrJGVVlopyy+/fJZZZpn06NEjPXr0SPfu3XPTTTflD3/4Q6NhcZMmTWrynE888UQ+/fTTPPHEE+VtvXv3zltvvZWOHTvmtttua/YuRMMH3ksvvTQ77rhjtttuuwwbNiwrr7xyXn311Wy55ZZZf/3189///jd77rlnk18OZqempiaffPJJOnTo0OQdz1KplN/+9rdJknPOOafJicCa0pJ0urKyshxAzc4vf/nLXHzxxdl3330bDTuf+Tx9+/ZNkvJEjNtss03++9//tqitM9tkk03KH+p/+9vfZvTo0VlvvfWabf/cWHLJJfPRRx/NMnR08uTJX/kLJSxsU6dOzX777Zcvvvhiln3Tpk3L/vvvn1NOOSVbbrnlHM+19NJLZ7vttsvgwYOz/vrrZ7XVVkvPnj2z3HLLZemlly73ud26dcuRRx6Zd955J7vvvnt5wr/Z9blvvfVW3nzzzRZdk36wMf0gXyfTpk3LXnvtlSFDhmT33Xcv35iaV88//3wOP/zwZvf/7W9/y9/+9rdZtv/jH/9oFIj069cv77zzTt55550888wzueOOO2aZE+Ohhx7Kiy++mPXWW6/89/1lDX+LTzzxRNZbb72USqVMmjQppVKpRfNQjBkzJj/72c+SzBjhMPNysfPbwIEDyyMc/vjHPzbqU99///3897//bdFjKk3p169fTj311HIQPPMcMzNrGCVTUVHR7LLCM89V8qc//SkHHHDALGVqamqavak5derUHHbYYZk6dWrWWWednHTSSeV5br6KQw89tByI3HjjjU0+3jM3GgK9rl27fuXHXpk9gQiLpVNOOSW//vWv55iKn3zyydl7772z6qqrlu8GDBo0KL/85S+z4YYbNpr0r6HT//GPf1w+/qSTTsqbb76ZlVdeucmE96KLLsopp5xSfkOorq4uhx3LLLNMXn755ey77765//77M2zYsGy11Va5+eab5/p633nnnZRKpUyfPj0jRoyYZeby2267La+++mqS5OKLL240iVhlZWWefvrpJr9AtOSuwtxO1NWctm3bzvYZ9srKytneqa2rq2vyjvSc7iDN7Z2Thp9Tw7O5Da644oq88MILueaaaxbJ88owN4477rg899xz6dmzZyZOnNjoWf7f/e53ufPOO/Pggw/m7rvvzo477jjH8917772NJttszrXXXpuOHTtmiSWWKH+I+/vf/56VV1650Z3UQYMGlb/MNzeZ9ZfpB/WDfH0dffTReeKJJ7LBBhvkpptumm+PYzWM/lhttdXKgWmSXHXVVXnppZdyyCGH5Lvf/W55++9+97t8+OGHs4waOeWUU7LeeuvlmGOOycsvv5xNN900d955Z/lL+nPPPZf9998/bdu2zTXXXNNs+zfaaKMMGTIkJ510UqNRbOeee+4cV8QqlUo57LDDyiPBXnrppbn6ObVv377ZFcS+bMKECTnwwANTX1+f73//+zn44IMb7W+YEHROk8M2Z9q0aZkwYUKmTp2aqVOnprq6uslraQj127dvX55DqqlzTZs2LZMmTWp2tPhZZ52VESNGNLnvxBNPzCuvvJKKior85S9/adGowdn55je/mS222CIvvPBCbr755px33nlfefLpadOmlW/U9u7dWyC9oCzMNX5hUZo+fXpp2223ne0a5uuuu25p0qRJjY6rqakpnXfeeaUkpS233LJ04IEHljbaaKNSktKVV15ZqqurKyUpVVZWNjpu0qRJpb/+9a+lZZddtpSk9D//8z+lsWPHfqW2X3/99eU2Hn744Y32TZw4sdSzZ89mr2nbbbdt9rwnnnjiHNd1HzJkSIvaeMopp5SSlA499NAWX9f48eNLEydOLE2bNq1F5evq6koTJ04sffHFFy2u49Zbby0lKW2yySYtKn/IIYeUkpQuvfTSRtsb/pv36NGjNHr06BbXDwvbOeecU0pSqq6uLr344oulFVdcsZSk9MADD5RKpVLp888/L22yySalJKV27dqV7rrrrgXSjpEjR5aWWmqp2fYvX+7PZkc/OIN+kNbqv//9b6lLly6l5ZZbrtSrV6/S6quv3uSrsrKylKRcplevXuW/tWWWWWaW8qusskppueWWK62xxhqN6uvatessf59f3nbvvfeWkpS+/e1vNzq2d+/epSSlq666qtH2hr6xf//+TV7j+PHjS7vsskspSaljx46l999/v3TNNdeUqqqqSm3atCndcssts/0Zffjhh6U99tijtNZaazW6xtdee22OP98zzzyz0c9p7bXXbtGroW/s3r37HOsolWZ8Xt5jjz3Kf+vDhw+fpcy3vvWtUpLSww8/3KJzflX7779/KUnpL3/5y1c+x0svvVRq06ZNKUm5b2v4HRk+fHhp3XXXLSUp/exnPysfM27cuHK5r+Kqq64qH//II4+Utw8ZMqS8fcCAAeXtb7/9dpPvNwMGDChvf+65575SW5gzI0RYbO20007l1Vxm56WXXspmm22WioqKPPLII7nvvvsydOjQWe6yLbnkktlzzz1nSV9nvit69NFH57DDDsv555+fgQMHpm3bto1GhwwZMiT33ntvHnvssTz55JPlZPvUU0/N+eef/5UT4ueff7787xtuuCFHH310ebnKTp06ZdiwYbMc07DqwJdT/Zk1pPGzW26yQX19ff7v//4v//jHP3L77bd/5bsCM2vpkPYGbdq0meu5Vxru7L722mvNtnmzzTYrT7zbMER2yJAh5f2DBw/OwIEDkyRHHnmkO6O0Wuedd175LuhVV101y6RxyYxhtw899FC23377vPHGG9l3333z97//Pfvtt99sz92uXbs5TgjasWPH8lDj5ZZbLm+//Xb69++f0aNHN1q9JJmx/OTcDP/VD86gH6S1KpVKmTx5cioqKjJ9+vRmV2Nafvnlk8yYsLNh9FrHjh3Lj4x8+TGMurq61NbWtmgC5C/7qhOu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YfrYsWPLj+q0RMMSunN6LOqyyy77yo9ONaWioqLcj8/O7rvvnrZt25ZHeuy9995zVU9DqL/jjjvOMok485cRIiz29txzz1RUVMzy+vIbUUMKP3MHNnny5Pzud7/L5ptvnptuuimnnHLKXNffsCzhzHcgH3nkkey7776pr6/PMcccM8vdgYY3tDk9a1pXV1cewt3wmM83vvGNnHXWWamrq8sBBxwwy7Kap59+eqZPn56DDjooa6211mzP35IvAjM/919dXV3+MPy3v/0t77333hyPb3DmmWempqYmo0ePzieffJLhw4eXXw2rTSTJTTfd1GhfwzOTP/vZzxptHz58eD7++ON89tlnmThxYqZNm9ZoibwG48aNS5Im37ia+iLQpk2b8l2Eu+66K5dddlm5/fN7mDt8VZMmTco555yTTTfdNG+//XY6duyYu+66a67CkAbrrbde7rnnnlRXV6euri69e/fO448/3mz57t27z9LfNvVITFN97ogRI3LwwQdn7733zjnnnNOipWz1g/pBFm8TJ05s9OV/0003zcsvv9woDBk7dmxOO+20rLfeenn88cfz8ssv59prr52resaMGZP6+vpUVFTM9dw8c+upp57KG2+8kdNOOy1vvfVWeXvv3r2z1FJL5a233srDDz88y3GXXXZZpk6dmn322Sff+MY3mjz3iy++mPXXX78chvzoRz/KjTfe2CgcuvTSS1s8kuKBBx5o9jrq6+uz0047lcOQH/3oR+X3g3k1N6tztWnTJm+//Xb23HPPFr+uvvrqFtXTkseXFoSuXbuWVzDq37//LO9Ts/Pcc8/lySefTOJxmYVBIMJib8UVV8zaa689y+vLaXBDZ1hZWZlx48blwgsvzOqrr56zzz47kydPzkYbbZQNNthgtsOnf/WrX2WdddYpD02vr68vjxBZYoklMnny5PTp0yc777xzJkyYkK233joXX3xxo3O8++67+fe//53Kyso5jhC58cYb8+GHH2aDDTZoNCHTaaedlm222SbvvfdeDj300PKH9Ztvvjn9+/dP165dZ/s8ZIOWfBH4cpmGiWVfffXVJiea+ipm/kKx8sorz5dzNmi4g9IwWdvMGr4IfPkuSMPP+je/+U1qamqy4YYb5ic/+cl8bRfMi9deey0XXHBBpk6dmm984xt54YUXWjTirDnbbbddeaTD5ptvPtuhxWuuueYs/W1TfcHMfe7777+fn//851lzzTXLS2ruuuuuLXrGXD847/SDLAp1dXXp169f1l133fz5z38ub3/ooYfKYcCHH36Y0047Lauttlr++Mc/ZvLkyVlvvfVy/fXX54gjjpjt+RsmeW6YI+fdd99NMmOem/nxhX52Gu7eH3744VlvvfXK29u3b5///d//TZL88pe/bDQR9UcffZTLL7881dXVOeecc5o996abblqe5Pqwww7LXXfdNc9LwTanTZs2+dvf/pY111wzBx98cO68884F/rNrSmVlZTbbbLMMGzasxa/zzjsvydwvK74w7b333tlzzz3z97//fa7+G3bu3DmHHnpoll566SZHbDJ/eWSGxd4VV1zRZGfxzW9+s8nhiq+++mpWWGGFTJkyJe3atUvv3r1z7LHHNjmLdoOGD8OffPJJPvnkk/L2adOmNRoh8re//a08U/Y3vvGN9O3bN9/5znfSr1+/fOtb30qS9O3bN0ny/e9/f7ZD4Orq6sqP3zRMptWgTZs2ueWWW7LRRhvlnnvuyUknnZSjjz66PCfJeeedV57FfXYawp+77rqrPGFh0vhu6JcDoqWWWirXX3/9HM89N/79738nmXFHedVVV52v526YDKupn0dDWv/lLwK77bZbzjrrrNTW1qaysjJ9+/b9SrPbw4Ky9dZbp2/fvnn44YdzxRVXzJc5HQ444IDU19fnxz/+8WyHAr/00kvp1q1bo21jxoxpduLUK664In369EmpVMqSSy6ZY445Jscee2x5nqfZ0Q/OH/pBFqapU6fmpptuynnnnVcO+nr37l1+9K2mpib9+/fPrbfemgcffDD19fWpqqrKHnvskeOOOy7f+973WlxPkvJEwS+99FKSZMMNN5zfl9TI4MGDc/fdd6e6urrJOZKOO+649OvXL4MGDcoZZ5yRiy++OKVSKYcffngmT56cc845Z7b9X5s2bXLFFVdkyy23zIEHHrgAr2SG1VdfPS+++GK6deu2SMOFDz/8sDxHU0s0BGCLwvTp01NXV5eampp06tSp2UdyjjrqqPIcLnNjgw02yA033JAvvvjCqLyFwDsbhTNp0qRsu+222XfffbPPPvu0aOnAyZMnJ0muv/76HHbYYbnoooty6qmnZsqUKeWwZIkllshPf/rT3Hffffnkk0/y4IMP5txzz83AgQPzox/9KC+//HKSlCeBOvnkk2db50UXXZQPPvggq6yySpPLYa644oq566678r3vfS9/+tOf8te//jU1NTX54Q9/mGOOOaZFP4uGts9uFvGGOy8L0iOPPJJkxpe8OT2TObcanjFt6gvGyJEjk2SW34GZPxDstddes8xPUCqVWvUdCYph//33z/777z9fz7kgJm6bPHly9t577/Tu3Tu77rrrXH240w/OH/pBFoYhQ4bk+uuvz7XXXptRo0YlmfE795e//CU777xzORBZffXVyyMn1lxzzfzkJz/JYYcdluWWW67FdTXMxZb8/zly7rzzziRpNJKsJSPAJkyYkDfffDNDhw4tLzU9u/Dv3HPPzfTp03PEEUekZ8+es+xv27Ztbr311my22Wa55JJLsvLKK2fo0KF57LHHsuWWWza5TGtTZheGnHTSSXOcH2luNDV67MtLpbfUV+0XRo8eXV7NqjWZ0/U8/fTT2XrrrRdI3Qv60S9mEIiw2Ntzzz3nqvw222wz2+fjm9IQiDTYe++9881vfjNrrbVWeUmshjlELrvssiyzzDLp0qVLfv/732fgwIF5/PHHs/vuu2fZZZfNxIkTs8MOO8z2Dsjrr79enmzwyiuvbPaNeZtttskZZ5yRPn36pKamJhUVFTn77LNb/GbU8EHh0EMPbXa5yQX9RWDIkCHl51t32223+Xru4cOHl1eBaJi3pcG4ceMycODAJI2/CAwbNqzRowcPPfRQPvnkk/IHtWnTpmX77bfPlVdeucDvQkFr1NQH59k59dRTv9JKM/rB+UM/yMJy4403lh8FWWqppfLrX/86P/vZz2Z5BKNnz57ZZ599ss8++2TTTTf9SnVVV1c3+sJ+11135dlnn02bNm0aBcUtCUTatGmT3XbbLZ999ll5W1Nz8SQzRhnfdNNNqaqqyumnn97sOdddd93ccccd2X333csrkfTs2TN33333fJngc5lllmlxX1xTU5Phw4fPdR0tXUL5y8aMGZNk7lf6+c53vtNolN6cXH311Qtlkuemfhfq6+vLI0TmZq4UWieBCIu9FVdcsbyawcyGDBky1535p59+mmWWWWaW7UcffXR23nnn8nOiq6yySlZZZZUkKd8FaQhEZn6evGPHjrnnnnuy9dZbl4dydu7cuTxKpLk27LnnnpkyZUoOPvjgZpcJrq2tzR/+8IfyM5TJjDR/m222yUknnZSTTz45Sy655GyvtyUfFKZMmTLHMl9VfX19fvKTn2TatGnp3LnzV5o46oILLsi0adNy1FFHZdlll220r3///klm3K3ZdNNNM2TIkBxyyCGZMmVK3nnnndTU1DQanv7ee+9lp512yrBhw7L22munQ4cOGThwYI4//vjyhGNDhgzJc889l4022miB3hWA+eWr3uVrzpprrjnLB936+vq5mlw0mXFXtmHp2S/TD84d/SCtwVlnnZVnn302W2+9dU4++eRml7t+7bXXZnnsrilPPPFEXn/99Rx77LGzDRGGDx9e/mL805/+tNGojS/f0GpKx44ds/vuu6dfv37p2rVrfv3rXzdaBnhmJ554YkqlUg444IA5zvXTvXv39OzZszzqpFOnTnnvvfdm+Rv9Kn71q1/NdsnXmT344IPN9qHNaXgkpKX+9a9/5f7778+oUaPy6KOPJslcX+fQoUPn6pGZhjB3QZvb9zYWQyVYTB144IGlJKW77767yf3rrbdeKUlpyJAhpVKpVHr55ZdLSUrbbbddk+WHDRtWateuXWnvvfcujR07ttl66+vrSy+99FLpySefLN14442lZZddtpSkdM455zRZ/v333y9ts802pSSlysrK0h133NHsuUeNGlVu90orrVT67LPPZinzxRdflC666KLS8ssvXz7nSSedVPrggw9Ke+65ZylJKUmpU6dOpWOOOab04osvNltfw8/w0EMPneUaBwwYUBowYEDp888/b/b4mZ188slNnqs5kyZNKu2+++7l9l5xxRVNlttuu+1KSUqnn356k/t33XXX8s9hxIgRjfZtvPHGpSSlHXbYobxtiy22KNeZpHTKKaeUSqVSqX///qUePXqUkpTWWmut0ogRI0qPPfZYudx5551XKpVKpdtuu628beTIkS26VliUGvqo+++/f57Os+KKK5aSlMaNGzfLvtGjR5eSlHr16lXe9sc//rGUpHTWWWc1eb6///3vpR49epROO+20Rtv1g7PSD/J10PA709TfdFMa/p5WWmml0qRJk5os89lnn5U22mij8u/sl/9Wb7311tKyyy5b2mWXXRpt//GPf1xKUvrLX/5SKpVKpf/85z+lJ598sjR58uRm29O3b99SklJFRUXpzTffbLbcs88+W9p7771LFRUVpSSl//mf/yltuumm5evfeeedSwMGDChNnz69RT+H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b7/9thyGREdHY8eOHejZsyd0Oh2GDx+OR48eAYA830mLFi2ststoNNpst5eXF4QQNrf+/ftbPT8yMhKFhYWoXbu22ZCeoqIiTJgwAbt27QIAxMbGmvUakuj1epP/37lzB0DJJLdl51YhIiKqSthDhIiIqIqTHqzLe8CuiP79+8uTjioUCrPeGTqdDkDJsJPSQ0Ok/fHx8dixY4fJOXq93iQEefz4sdmQlLy8PCxfvhzR0dHQ6/WoV68eEhMT4enpadbG0iusnDhxQg4JhBB48OCBvFQwAJP5UYxGI7744gsAQMuWLREaGgoA6NmzJ2bNmoWmTZuiffv2CA0NxcWLFzFgwABkZGRAqVRi48aN8oo5sbGx6NSpE7KysvDmm29i7ty5uHbtGgDbk5QWFBQAMF9q2FZAVJZarbZ6bMuWLfjrX/+K9u3bmyyne+TIEcydOxeXL18GULICzdixY83Ol76fp06dQkZGBho2bIi8vDxs2LABANC6detKn+CWiIjof4mBCBERURUnfYJf9pP8sqQH7Yr2KDEYDFYf1oUQFnuRGI1Gh3qXpKSkIC4uDnFxcfIKK4GBgdi3bx+CgoIsntOkSRP53wMGDICzszNcXFyg1+tNQqLevXubzHuxatUqnDlzBgAwf/58eX+NGjUQExMDoKSHzKRJk7Bz504IIdC4cWPs2LEDYWFhcvnAwEB88803GDduHDIyMjB79mwAJUGNrR4c1gKR8r6PAHD//n1cu3YNV69elesqy9vbWx5qBAA//vgjFi1ahPPnzwMomRR22bJlVnvdhISEAABu3bplsafLnDlzym0nERHRy4yBCBERURUnPVCXfbAuS3rQLq9caYmJifDw8ICXlxc8PDzg6upa8YaWakdRURHy8vKQk5MjL/F769YtDBw4UB524uzsjLlz52LZsmVwd3e3er2AgAB88cUXWLNmDR49egSj0WjyGt3d3TFixAg55Ch9XuvWrVGjRg1MnDjR4rUVCgUuXboEIQTeeustfPPNN2jYsKFZudGjR8PNzQ1Tp07Fw4cPAQBDhw41CWvKkgKRsoFRUVGR1XMkycnJ8oSr7u7ueO2118o9p2PHjnLbgoKCsHnzZpsT1Hbq1Anbt2/H/v37cefOHWg0Gri6uqJp06YYOnQoxo8fX26dRERELzMn8bKsC0dEREQV0rt3bxw7dgyDBg3CwYMHrZYbP348EhISMGvWLLNw4GVx9epVDBgwAL169cL8+fMtrvxSmbRaLbKzs+Hr62u1THp6Ok6cOIH333+/3OsVFBTg8OHDUKvVGDJkCGrXrm2xnE6nQ7NmzQAABw4cMJnw9O7du/D19YWXl5fcS6YstVqNli1bomvXrpg7d65JjxVbdu/eDa1WizFjxti1ogwREdGrjIEIERERvVQMBgMf1omIiOi5YyBCRERERERERNUOl90lIiIiIiIiomqHgQgRERERERERVTsMRIiIiIiIiIio2mEgQkRERERERETVDgMRIiIiIiIiIqp2GIgQERERERERUbXDQISIiIiIiIiIqh0GIkRERERERERU7TAQISIiIiIiIqJqh4EIEREREREREVU7DESIiIiIiIiIqNphIEJERERERERE1Q4DESIiIiIiIiKqdhiIEBEREREREVG1w0CEiIiIiIiIiKodBiJEREREREREVO0wECEiIiIiIiKiaoeBCBERERERERFVO/8PR8Ej7SPbVRQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1280x960 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytools.show_bar(df,'作业完成情况')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>性别</th>\n",
       "      <th>女</th>\n",
       "      <th>男</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>作业完成情况</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不能及时完成</th>\n",
       "      <td>7.02</td>\n",
       "      <td>8.6</td>\n",
       "      <td>7.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>老师没有布置作业</th>\n",
       "      <td>3.51</td>\n",
       "      <td>8.6</td>\n",
       "      <td>5.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>能够及时完成</th>\n",
       "      <td>89.47</td>\n",
       "      <td>82.8</td>\n",
       "      <td>86.47</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "性别            女     男     合计\n",
       "作业完成情况                      \n",
       "不能及时完成     7.02   8.6   7.73\n",
       "老师没有布置作业   3.51   8.6   5.80\n",
       "能够及时完成    89.47  82.8  86.47"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['作业完成情况'],\n",
    "        df['性别'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>作业完成情况</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>不能及时完成</th>\n",
       "      <td>7.5</td>\n",
       "      <td>2.44</td>\n",
       "      <td>11.11</td>\n",
       "      <td>0.00</td>\n",
       "      <td>7.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>老师没有布置作业</th>\n",
       "      <td>10.0</td>\n",
       "      <td>9.76</td>\n",
       "      <td>2.78</td>\n",
       "      <td>5.56</td>\n",
       "      <td>5.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>能够及时完成</th>\n",
       "      <td>82.5</td>\n",
       "      <td>87.80</td>\n",
       "      <td>86.11</td>\n",
       "      <td>94.44</td>\n",
       "      <td>86.47</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级          大一     大三     大二     大四     合计\n",
       "作业完成情况                                    \n",
       "不能及时完成     7.5   2.44  11.11   0.00   7.73\n",
       "老师没有布置作业  10.0   9.76   2.78   5.56   5.80\n",
       "能够及时完成    82.5  87.80  86.11  94.44  86.47"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['作业完成情况'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从数据统计图我们可以看出网课期间大学生的作业总体还可以，数量完成度很高，数量完成度能够及时完成的占有一半以上，但也有一小部分的同学不能及时完成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "自律性差\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "其它\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "没有良好的学习环境\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "其它\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "其它\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "没有良好的学习环境\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "没有良好的学习环境\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "缺乏学习动力\n",
      "其它\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "自律性差\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "其它\n",
      "自律性差\n",
      "缺乏学习动力\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "自律性差\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "其它\n",
      "其它\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "自律性差\n",
      "其它\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n",
      "自律性差\n",
      "没有良好的学习环境\n",
      "缺乏学习动力\n"
     ]
    }
   ],
   "source": [
    "df3['test'] = df3['11、您认为影响线上学习的因素有哪些？'].str.split('┋')\n",
    "mcq_items = []\n",
    "for g in df3['test']:\n",
    "    # print(g)\n",
    "    for label in g:\n",
    "        print(label)\n",
    "        mcq_items.append(label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "互动过少\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "其他\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "互动过少\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "互动过少\n",
      "其他\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "互动过少\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "其他\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "操作电子学习设备水平能力较低\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "其他\n",
      "其他\n",
      "其他\n",
      "互动过少\n",
      "其他\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n",
      "互动过少\n",
      "操作电子学习设备水平能力较低\n",
      "教师教学内容传达不清晰\n"
     ]
    }
   ],
   "source": [
    "df3['test'] = df3['12、您认为线上学习中教师教学存在的问题是？'].str.split('┋')\n",
    "mcq_items = []\n",
    "for g in df3['test']:\n",
    "    # print(g)\n",
    "    for label in g:\n",
    "        print(label)\n",
    "        mcq_items.append(label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = list(set(mcq_items))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 定义一个针对问卷星数据多选题的分析函数\n",
    "\n",
    "\n",
    "def gen_mcq_df(df,x,pattern='┋'):\n",
    "    \"\"\"\n",
    "    定义一个针对问卷星数据多选题的分析函数\n",
    "    \n",
    "    df: 数据框\n",
    "    x: 问卷星中定义的多选题\n",
    "\n",
    "    返回值： 一个包含所有选项及出现次数和所占比例的数据框\n",
    "\n",
    "    如：\n",
    "\n",
    "    |选项|次数|比例（%）|\n",
    "    |--|--|--|\n",
    "    |单纯根据个人喜爱|20|5.5|\n",
    "    |广告内容较感兴趣|20|5.5|\n",
    "    |喜欢的明星代言|20|5.5|\n",
    "    |视频广告|20|5.5|\n",
    "       \n",
    "    \"\"\"\n",
    "    # 按照指定分隔符将多选题字符串转化包含多个选项的列表\n",
    "    df['temp'] = df[x].str.split(pattern)\n",
    "    # 初始化列表，用于保存所有多选题选项\n",
    "    mcq_items = []\n",
    "    # 循环所有个案，获取所有多选题选项\n",
    "    for g in df['temp']:\n",
    "        for label in g:\n",
    "            # print(label)\n",
    "            mcq_items.append(label)\n",
    "    # 将多选题选项去重后转化为列表，方便构造dataframe\n",
    "    result = list(set(mcq_items))\n",
    "    # 构造包含选项、次数和比例的空表\n",
    "    df_mcq_1 = pd.DataFrame(data=np.zeros([len(result), 2]),\n",
    "                            index=result,\n",
    "                            columns=['次数', '比例'])\n",
    "    # 通过循环获取每个选项在多选题中累次出现的次数\n",
    "    for i in df[x]:\n",
    "        for label in result:\n",
    "            if str(i).__contains__(label):\n",
    "                df_mcq_1.loc[label, '次数'] += 1\n",
    "    # 生成比例列\n",
    "    df_mcq_1['比例'] = df_mcq_1['次数'] / df.shape[0] * 100\n",
    "\n",
    "    return df_mcq_1.astype({'次数':\"int\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>次数</th>\n",
       "      <th>比例</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>其它</th>\n",
       "      <td>69</td>\n",
       "      <td>33.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>没有良好的学习环境</th>\n",
       "      <td>134</td>\n",
       "      <td>64.734300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>缺乏学习动力</th>\n",
       "      <td>135</td>\n",
       "      <td>65.217391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>自律性差</th>\n",
       "      <td>141</td>\n",
       "      <td>68.115942</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            次数         比例\n",
       "其它          69  33.333333\n",
       "没有良好的学习环境  134  64.734300\n",
       "缺乏学习动力     135  65.217391\n",
       "自律性差       141  68.115942"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ad_app_type = gen_mcq_df(df,'11、您认为影响线上学习的因素有哪些？')\n",
    "ad_app_type = ad_app_type.sort_values(by='比例')\n",
    "ad_app_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "hovertemplate": "比例=%{x}<br>index=%{y}<extra></extra>",
         "legendgroup": "",
         "marker": {
          "color": "#636efa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "",
         "offsetgroup": "",
         "orientation": "h",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          33.33333333333333,
          64.73429951690821,
          65.21739130434783,
          68.11594202898551
         ],
         "xaxis": "x",
         "y": [
          "其它",
          "没有良好的学习环境",
          "缺乏学习动力",
          "自律性差"
         ],
         "yaxis": "y"
        }
       ],
       "layout": {
        "barmode": "relative",
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "fillpattern": {
             "fillmode": "overlay",
             "size": 10,
             "solidity": 0.2
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "xaxis": {
         "anchor": "y",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "比例"
         }
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "index"
         }
        }
       }
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = px.bar(ad_app_type, x=\"比例\",orientation='h')\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '提交答卷时间', '所用时间', '来自IP', '性别', '年级', '网课数量多少', '上网课是否会分心',\n",
       "       '课堂教学和网络教学偏好', '上网课前是否提前预习', '有疑问是否会向老师请教', '是否会参与讨论', '线上学习的气氛',\n",
       "       '作业完成情况', '11、您认为影响线上学习的因素有哪些？', '12、您认为线上学习中教师教学存在的问题是？', '线上学习效率',\n",
       "       '填写问卷时长', 'temp'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "推论统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>线上学习效率</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>一般</td>\n",
       "      <td>140</td>\n",
       "      <td>67.63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>不高</td>\n",
       "      <td>54</td>\n",
       "      <td>26.09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>高</td>\n",
       "      <td>13</td>\n",
       "      <td>6.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>总和</td>\n",
       "      <td>207</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  线上学习效率   个数    百分比\n",
       "0     一般  140  67.63\n",
       "1     不高   54  26.09\n",
       "2      高   13   6.28\n",
       "3     总和  207  100.0"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mytools.gen_percent_table(df,'线上学习效率')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>性别</th>\n",
       "      <th>女</th>\n",
       "      <th>男</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>线上学习效率</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>一般</th>\n",
       "      <td>69.30</td>\n",
       "      <td>65.59</td>\n",
       "      <td>67.63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>不高</th>\n",
       "      <td>25.44</td>\n",
       "      <td>26.88</td>\n",
       "      <td>26.09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>高</th>\n",
       "      <td>5.26</td>\n",
       "      <td>7.53</td>\n",
       "      <td>6.28</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "性别          女      男     合计\n",
       "线上学习效率                     \n",
       "一般      69.30  65.59  67.63\n",
       "不高      25.44  26.88  26.09\n",
       "高        5.26   7.53   6.28"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['线上学习效率'],\n",
    "        df['性别'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>年级</th>\n",
       "      <th>大一</th>\n",
       "      <th>大三</th>\n",
       "      <th>大二</th>\n",
       "      <th>大四</th>\n",
       "      <th>合计</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>线上学习效率</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>一般</th>\n",
       "      <td>55.0</td>\n",
       "      <td>65.85</td>\n",
       "      <td>71.30</td>\n",
       "      <td>77.78</td>\n",
       "      <td>67.63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>不高</th>\n",
       "      <td>35.0</td>\n",
       "      <td>26.83</td>\n",
       "      <td>24.07</td>\n",
       "      <td>16.67</td>\n",
       "      <td>26.09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>高</th>\n",
       "      <td>10.0</td>\n",
       "      <td>7.32</td>\n",
       "      <td>4.63</td>\n",
       "      <td>5.56</td>\n",
       "      <td>6.28</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "年级        大一     大三     大二     大四     合计\n",
       "线上学习效率                                  \n",
       "一般      55.0  65.85  71.30  77.78  67.63\n",
       "不高      35.0  26.83  24.07  16.67  26.09\n",
       "高       10.0   7.32   4.63   5.56   6.28"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.crosstab(\n",
    "        df['线上学习效率'],\n",
    "        df['年级'],\n",
    "        normalize='columns',\n",
    "        margins=True,\n",
    "        margins_name='合计',\n",
    "    )*100\n",
    "result.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>线上学习效率</th>\n",
       "      <th>年级</th>\n",
       "      <th>频次</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>一般</td>\n",
       "      <td>大一</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>一般</td>\n",
       "      <td>大三</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>一般</td>\n",
       "      <td>大二</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>一般</td>\n",
       "      <td>大四</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>不高</td>\n",
       "      <td>大一</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>不高</td>\n",
       "      <td>大三</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>不高</td>\n",
       "      <td>大二</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>不高</td>\n",
       "      <td>大四</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>高</td>\n",
       "      <td>大一</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>高</td>\n",
       "      <td>大三</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>高</td>\n",
       "      <td>大二</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>高</td>\n",
       "      <td>大四</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   线上学习效率  年级  频次\n",
       "0      一般  大一  22\n",
       "1      一般  大三  27\n",
       "2      一般  大二  77\n",
       "3      一般  大四  14\n",
       "4      不高  大一  14\n",
       "5      不高  大三  11\n",
       "6      不高  大二  26\n",
       "7      不高  大四   3\n",
       "8       高  大一   4\n",
       "9       高  大三   3\n",
       "10      高  大二   5\n",
       "11      高  大四   1"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sun_df = df.groupby([\"线上学习效率\",'年级']).size().reset_index(name='频次')\n",
    "sun_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>频次</th>\n",
       "      <th>%</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>线上学习效率</th>\n",
       "      <th>年级</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">一般</th>\n",
       "      <th>大一</th>\n",
       "      <td>22</td>\n",
       "      <td>55.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大三</th>\n",
       "      <td>27</td>\n",
       "      <td>65.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大二</th>\n",
       "      <td>77</td>\n",
       "      <td>71.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大四</th>\n",
       "      <td>14</td>\n",
       "      <td>77.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">不高</th>\n",
       "      <th>大一</th>\n",
       "      <td>14</td>\n",
       "      <td>35.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大三</th>\n",
       "      <td>11</td>\n",
       "      <td>26.83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大二</th>\n",
       "      <td>26</td>\n",
       "      <td>24.07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大四</th>\n",
       "      <td>3</td>\n",
       "      <td>16.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">高</th>\n",
       "      <th>大一</th>\n",
       "      <td>4</td>\n",
       "      <td>10.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大三</th>\n",
       "      <td>3</td>\n",
       "      <td>7.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大二</th>\n",
       "      <td>5</td>\n",
       "      <td>4.63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>大四</th>\n",
       "      <td>1</td>\n",
       "      <td>5.56</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           频次      %\n",
       "线上学习效率 年级           \n",
       "一般     大一  22  55.00\n",
       "       大三  27  65.85\n",
       "       大二  77  71.30\n",
       "       大四  14  77.78\n",
       "不高     大一  14  35.00\n",
       "       大三  11  26.83\n",
       "       大二  26  24.07\n",
       "       大四   3  16.67\n",
       "高      大一   4  10.00\n",
       "       大三   3   7.32\n",
       "       大二   5   4.63\n",
       "       大四   1   5.56"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp = sun_df.set_index(['线上学习效率','年级'])\n",
    "temp['%'] = 100 * (temp / temp.groupby('年级').sum())\n",
    "temp.round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>线上学习效率</th>\n",
       "      <th>年级</th>\n",
       "      <th>频次</th>\n",
       "      <th>%</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>一般</td>\n",
       "      <td>大一</td>\n",
       "      <td>22</td>\n",
       "      <td>55.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>一般</td>\n",
       "      <td>大三</td>\n",
       "      <td>27</td>\n",
       "      <td>65.853659</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>一般</td>\n",
       "      <td>大二</td>\n",
       "      <td>77</td>\n",
       "      <td>71.296296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>一般</td>\n",
       "      <td>大四</td>\n",
       "      <td>14</td>\n",
       "      <td>77.777778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>不高</td>\n",
       "      <td>大一</td>\n",
       "      <td>14</td>\n",
       "      <td>35.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>不高</td>\n",
       "      <td>大三</td>\n",
       "      <td>11</td>\n",
       "      <td>26.829268</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>不高</td>\n",
       "      <td>大二</td>\n",
       "      <td>26</td>\n",
       "      <td>24.074074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>不高</td>\n",
       "      <td>大四</td>\n",
       "      <td>3</td>\n",
       "      <td>16.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>高</td>\n",
       "      <td>大一</td>\n",
       "      <td>4</td>\n",
       "      <td>10.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>高</td>\n",
       "      <td>大三</td>\n",
       "      <td>3</td>\n",
       "      <td>7.317073</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>高</td>\n",
       "      <td>大二</td>\n",
       "      <td>5</td>\n",
       "      <td>4.629630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>高</td>\n",
       "      <td>大四</td>\n",
       "      <td>1</td>\n",
       "      <td>5.555556</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   线上学习效率  年级  频次          %\n",
       "0      一般  大一  22  55.000000\n",
       "1      一般  大三  27  65.853659\n",
       "2      一般  大二  77  71.296296\n",
       "3      一般  大四  14  77.777778\n",
       "4      不高  大一  14  35.000000\n",
       "5      不高  大三  11  26.829268\n",
       "6      不高  大二  26  24.074074\n",
       "7      不高  大四   3  16.666667\n",
       "8       高  大一   4  10.000000\n",
       "9       高  大三   3   7.317073\n",
       "10      高  大二   5   4.629630\n",
       "11      高  大四   1   5.555556"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sun_df = temp.reset_index()\n",
    "sun_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "branchvalues": "total",
         "domain": {
          "x": [
           0,
           1
          ],
          "y": [
           0,
           1
          ]
         },
         "hovertemplate": "labels=%{label}<br>频次=%{value}<br>parent=%{parent}<br>id=%{id}<extra></extra>",
         "ids": [
          "一般/大一",
          "不高/大一",
          "高/大一",
          "一般/大三",
          "不高/大三",
          "高/大三",
          "一般/大二",
          "不高/大二",
          "高/大二",
          "一般/大四",
          "不高/大四",
          "高/大四",
          "一般",
          "不高",
          "高"
         ],
         "labels": [
          "大一",
          "大一",
          "大一",
          "大三",
          "大三",
          "大三",
          "大二",
          "大二",
          "大二",
          "大四",
          "大四",
          "大四",
          "一般",
          "不高",
          "高"
         ],
         "name": "",
         "parents": [
          "一般",
          "不高",
          "高",
          "一般",
          "不高",
          "高",
          "一般",
          "不高",
          "高",
          "一般",
          "不高",
          "高",
          "",
          "",
          ""
         ],
         "type": "sunburst",
         "values": [
          22,
          14,
          4,
          27,
          11,
          3,
          77,
          26,
          5,
          14,
          3,
          1,
          140,
          54,
          13
         ]
        }
       ],
       "layout": {
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "fillpattern": {
             "fillmode": "overlay",
             "size": 10,
             "solidity": 0.2
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        }
       }
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = px.sunburst(sun_df,\n",
    "                  path=['线上学习效率','年级'],\n",
    "                  values='频次',\n",
    "                 )\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=一般<br>频次=%{y}<extra></extra>",
         "legendgroup": "大一",
         "marker": {
          "color": "#636efa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大一",
         "offsetgroup": "大一",
         "orientation": "v",
         "showlegend": true,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大一"
         ],
         "xaxis": "x",
         "y": [
          22
         ],
         "yaxis": "y"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=不高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大一",
         "marker": {
          "color": "#636efa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大一",
         "offsetgroup": "大一",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大一"
         ],
         "xaxis": "x2",
         "y": [
          14
         ],
         "yaxis": "y2"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大一",
         "marker": {
          "color": "#636efa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大一",
         "offsetgroup": "大一",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大一"
         ],
         "xaxis": "x3",
         "y": [
          4
         ],
         "yaxis": "y3"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=一般<br>频次=%{y}<extra></extra>",
         "legendgroup": "大三",
         "marker": {
          "color": "#EF553B",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大三",
         "offsetgroup": "大三",
         "orientation": "v",
         "showlegend": true,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大三"
         ],
         "xaxis": "x",
         "y": [
          27
         ],
         "yaxis": "y"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=不高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大三",
         "marker": {
          "color": "#EF553B",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大三",
         "offsetgroup": "大三",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大三"
         ],
         "xaxis": "x2",
         "y": [
          11
         ],
         "yaxis": "y2"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大三",
         "marker": {
          "color": "#EF553B",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大三",
         "offsetgroup": "大三",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大三"
         ],
         "xaxis": "x3",
         "y": [
          3
         ],
         "yaxis": "y3"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=一般<br>频次=%{y}<extra></extra>",
         "legendgroup": "大二",
         "marker": {
          "color": "#00cc96",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大二",
         "offsetgroup": "大二",
         "orientation": "v",
         "showlegend": true,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大二"
         ],
         "xaxis": "x",
         "y": [
          77
         ],
         "yaxis": "y"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=不高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大二",
         "marker": {
          "color": "#00cc96",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大二",
         "offsetgroup": "大二",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大二"
         ],
         "xaxis": "x2",
         "y": [
          26
         ],
         "yaxis": "y2"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大二",
         "marker": {
          "color": "#00cc96",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大二",
         "offsetgroup": "大二",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大二"
         ],
         "xaxis": "x3",
         "y": [
          5
         ],
         "yaxis": "y3"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=一般<br>频次=%{y}<extra></extra>",
         "legendgroup": "大四",
         "marker": {
          "color": "#ab63fa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大四",
         "offsetgroup": "大四",
         "orientation": "v",
         "showlegend": true,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大四"
         ],
         "xaxis": "x",
         "y": [
          14
         ],
         "yaxis": "y"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=不高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大四",
         "marker": {
          "color": "#ab63fa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大四",
         "offsetgroup": "大四",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大四"
         ],
         "xaxis": "x2",
         "y": [
          3
         ],
         "yaxis": "y2"
        },
        {
         "alignmentgroup": "True",
         "hovertemplate": "年级=%{x}<br>线上学习效率=高<br>频次=%{y}<extra></extra>",
         "legendgroup": "大四",
         "marker": {
          "color": "#ab63fa",
          "pattern": {
           "shape": ""
          }
         },
         "name": "大四",
         "offsetgroup": "大四",
         "orientation": "v",
         "showlegend": false,
         "textposition": "auto",
         "type": "bar",
         "x": [
          "大四"
         ],
         "xaxis": "x3",
         "y": [
          1
         ],
         "yaxis": "y3"
        }
       ],
       "layout": {
        "annotations": [
         {
          "font": {},
          "showarrow": false,
          "text": "线上学习效率=一般",
          "x": 0.15999999999999998,
          "xanchor": "center",
          "xref": "paper",
          "y": 1,
          "yanchor": "bottom",
          "yref": "paper"
         },
         {
          "font": {},
          "showarrow": false,
          "text": "线上学习效率=不高",
          "x": 0.49999999999999994,
          "xanchor": "center",
          "xref": "paper",
          "y": 1,
          "yanchor": "bottom",
          "yref": "paper"
         },
         {
          "font": {},
          "showarrow": false,
          "text": "线上学习效率=高",
          "x": 0.8399999999999999,
          "xanchor": "center",
          "xref": "paper",
          "y": 1,
          "yanchor": "bottom",
          "yref": "paper"
         }
        ],
        "barmode": "relative",
        "legend": {
         "title": {
          "text": "年级"
         },
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             },
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "pattern": {
              "fillmode": "overlay",
              "size": 10,
              "solidity": 0.2
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "fillpattern": {
             "fillmode": "overlay",
             "size": 10,
             "solidity": 0.2
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "xaxis": {
         "anchor": "y",
         "categoryarray": [
          "大一",
          "大三",
          "大二",
          "大四"
         ],
         "categoryorder": "array",
         "domain": [
          0,
          0.31999999999999995
         ],
         "title": {
          "text": "年级"
         }
        },
        "xaxis2": {
         "anchor": "y2",
         "categoryarray": [
          "大一",
          "大三",
          "大二",
          "大四"
         ],
         "categoryorder": "array",
         "domain": [
          0.33999999999999997,
          0.6599999999999999
         ],
         "matches": "x",
         "title": {
          "text": "年级"
         }
        },
        "xaxis3": {
         "anchor": "y3",
         "categoryarray": [
          "大一",
          "大三",
          "大二",
          "大四"
         ],
         "categoryorder": "array",
         "domain": [
          0.6799999999999999,
          0.9999999999999999
         ],
         "matches": "x",
         "title": {
          "text": "年级"
         }
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "频次"
         }
        },
        "yaxis2": {
         "anchor": "x2",
         "domain": [
          0,
          1
         ],
         "matches": "y",
         "showticklabels": false
        },
        "yaxis3": {
         "anchor": "x3",
         "domain": [
          0,
          1
         ],
         "matches": "y",
         "showticklabels": false
        }
       }
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = px.bar(\n",
    "    sun_df,  # 带绘图数据 \n",
    "    x=\"年级\",  # x轴\n",
    "    y=\"频次\",  # y轴\n",
    "    color=\"年级\",\n",
    "    facet_col=\"线上学习效率\",  # 列\n",
    "    category_orders={\"线上学习效率\": [\"一般\", \"不高\", \"高\"]},\n",
    ")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'tau_y值为：0.016，该值属于极弱相关或不相关。'"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tau_y = mytools.goodmanKruska_tau_y(df, '年级', '线上学习效率')\n",
    "F'tau_y值为：{tau_y:.3f}，该值属于{mytools.draw_on_corr(tau_y)}。'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy import stats\n",
    "x=df['年级']\n",
    "y=df['线上学习效率']\n",
    "chi2, p, dof, ex = stats.chi2_contingency(pd.crosstab(x, y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4.893157322202038, 0.5575878656607773)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chi2,p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'p': 'p=0.558>0.05', 'tex_p': 'p>0.05', 'conclusion': '接收虚无假设，拒绝研究假设。'}"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mytools.p_result(p)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对大学生情感维度的调查发现，不同年级的大学生对待线上学习效率的态度无显著性差异（p=0.755）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "e5b51f9075b4cc1ea8d9810577a26807122690438b3a6e6e05129a402faed2ba"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
